Python机器学习应用之基于决策树算法的分类预测篇

作者:柚子味的羊 时间:2021-10-28 20:53:14 

一、决策树的特点

1.优点

  • 具有很好的解释性,模型可以生成可以理解的规则。

  • 可以发现特征的重要程度。

  • 模型的计算复杂度较低。

2.缺点

  • 模型容易过拟合,需要采用减枝技术处理。

  • 不能很好利用连续型特征。

  • 预测能力有限,无法达到其他强监督模型效果。

  • 方差较高,数据分布的轻微改变很容易造成树结构完全不同。

二、决策树的适用场景

  • 决策树模型多用于处理自变量与因变量是非线性的关系。

  • 梯度提升树(GBDT),XGBoost以及LightGBM等先进的集成模型均采用决策树作为基模型。(多粒度联森林模型)

  • 决策树在一些明确需要可解释性或者提取分类规则的场景中被广泛应用。在医疗辅助系统中为了方便专业人员发现错误,常常将决策树算法用于辅助病症检测。

三、demo


#%%demo
##  基础函数库导入
import numpy as np

## 导入画图库
import matplotlib.pyplot as plt
import seaborn as sns

## 导入决策树模型函数
from sklearn.tree import DecisionTreeClassifier
from sklearn import tree
import pydotplus
from IPython.display import Image
##Demo演示DecisionTree分类
## 构造数据集
x_fearures = np.array([[-1, -2], [-2, -1], [-3, -2], [1, 3], [2, 1], [3, 2]])
y_label = np.array([0, 1, 0, 1, 0, 1])
## 调用决策树回归模型
tree_clf = DecisionTreeClassifier()
## 调用决策树模型拟合构造的数据集
tree_clf = tree_clf.fit(x_fearures, y_label)
## 可视化构造的数据样本点
plt.figure()
plt.scatter(x_fearures[:,0],x_fearures[:,1], c=y_label, s=50, cmap='viridis')
plt.title('Dataset')
plt.show()
## 可视化决策树
import graphviz
dot_data = tree.export_graphviz(tree_clf, out_file=None)
graph = pydotplus.graph_from_dot_data(dot_data)
graph.write_pdf("D:\Python\ML\DecisionTree.pdf")
# 模型预测
## 创建新样本
x_fearures_new1 = np.array([[0, -1]])
x_fearures_new2 = np.array([[2, 1]])

## 在训练集和测试集上分布利用训练好的模型进行预测
y_label_new1_predict = tree_clf.predict(x_fearures_new1)
y_label_new2_predict = tree_clf.predict(x_fearures_new2)

print('The New point 1 predict class:\n',y_label_new1_predict)
print('The New point 2 predict class:\n',y_label_new2_predict)

运行结果

Python机器学习应用之基于决策树算法的分类预测篇

训练集决策树

Python机器学习应用之基于决策树算法的分类预测篇

Python机器学习应用之基于决策树算法的分类预测篇

明天继续,还有一个决策树在真实数据集上的应用,明天出。先搞课题~

来源:https://blog.csdn.net/qq_43368987/article/details/122357174

标签:Python,决策树算法,机器学习
0
投稿

猜你喜欢

  • 关于ASP生成伪参数加密技巧

    2008-07-16 12:05:00
  • python中asyncore异步模块的实现

    2023-10-23 00:50:07
  • 常见JS前端接口校验方式总结

    2024-04-17 10:00:00
  • colab中修改python版本的全过程

    2022-10-31 07:18:38
  • Sqlserver timestamp数据类使用介绍

    2024-01-13 22:31:11
  • 在Vue项目中使用Typescript的实现

    2024-04-26 17:39:57
  • Pygame实战练习之保护单身狗游戏

    2022-07-04 03:30:28
  • 利用canvas实现的加载动画效果实例代码

    2023-06-29 22:49:51
  • 关于浮动的前世今生

    2009-08-19 18:51:00
  • OpenCV图像处理之七种常用图像几何变换

    2022-01-27 03:11:51
  • pandas数据分组和聚合操作方法

    2023-09-07 05:15:44
  • Python机器学习库scikit-learn安装与基本使用教程

    2022-01-17 14:19:03
  • python 字典修改键(key)的几种方法

    2021-01-05 16:58:00
  • python 将Excel转Word的示例

    2021-02-08 00:03:37
  • python实现计数排序与桶排序实例代码

    2023-12-28 11:32:37
  • jQuery.sheet – 创建Excel界面风格的jQuery在线应用

    2010-01-27 13:03:00
  • np.where()[0] 和 np.where()[1]的具体使用

    2023-04-21 20:21:29
  • Python中Flask-RESTful编写API接口(小白入门)

    2023-02-07 10:47:46
  • GO语言映射(Map)用法分析

    2024-04-28 09:17:53
  • Python快速生成随机密码超简单实现

    2022-08-07 19:26:09
  • asp之家 网络编程 m.aspxhome.com