继续创作,加快生长!这是我参与「日新方案 6 月更文应战」的第25天,点击检查活动概况
一.前语
1.1 本文原理
决策树是一种常用的机器学习方法,它能够协助咱们解决分类和回归问题。该模型具有高度的可解释性。该模型符合人类的思维方式,是一种经典的树形结构。 熵:香农用“下降”一词来表明信息传输中不确定性的量化。降幅越大,不确定性越大,从这些信息中得出结论就越困难。 基尼系数比信息熵要简略很多,基尼系数的核算公式如下所示。
信息增益(ID3算法)以某特征划分数据集前后的熵的差值公式. 基尼指数的核算 在分类问题中,假设有k类,样本点归于k类的概率为PK,则概率散布的基尼指数界说为: 假如样本集D依据特征a分为D1和D2,则在特征a的条件下,集D的基尼指数界说为: 基尼指数基尼(D,a)表明不同特征a组中数据集D的不确定性。基尼指数越大,样本集的不确定性越大,这类似于熵的概念。
1.2 本文目的
- 运用scikit-learn机器学习包的决策树算法,运用4个特征对鸢尾花进行分类;
- 运用ID3算法对气候与踢球数据集进行手艺核算,手写E(S, Temperature)、IG(S, Temperature) 、E(S, Humidity)、IG(S, Humidity)、E(S, Windy)、IG(S, Windy)的核算进程,摄影上传、张贴图片到试验报告。(核算方法请拜见附件PPT)
- 运用CART算法对气候与踢球数据集进行手艺核算,手写Gini(S, Temperature)、Gini gain(S, Temperature) 、Gini(S, Humidity)、Gini gain(S, Humidity)、Gini(S, Windy)、Gini gain(S, Windy)的核算进程,摄影上传、张贴图片到试验报告。(核算方法请拜见附件PPT)
- (选做)装置决策树可视化控件GraphViz和pydotplus包,对鸢尾花分类成果生成决策树可视化图片;
二.试验进程
2.1 运用scikit-learn机器学习包的决策树算法,运用4个特征对鸢尾花进行分类;
老规矩,先引入load_iris模块,有150组鸢尾花特征数据,咱们能够拿来进行学习特征分类。 如下代码:
from sklearn.datasets import load_iris
iris = load_iris()
X = iris.data
y = iris.target
引入决策树模块:
from sklearn import tree
依据特征剖析,数据可分为根节点(初始节点)、中间节点和叶节点(无进一步可分离的节点)。
咱们运用DecisionTreeClassifier创立一个决策树分类器,如下代码:
e = tree.DecisionTreeClassifier(criterion='entropy')
上文参数解释:
criterion : string,optional(default =“gini”)
特征挑选标准,可选参数,默许是gini,能够设置为entropy。 基尼是基尼不纯,是将集合中的某个成果随机应用于某个数据项的预期错误率。这是一个核算概念。熵便是香农熵,一种基于信息论的思维。 选用全部特征值:
tree.fit(X,y)
输出训练得分和预测,如下代码:
print("决策树 training score: ",tree.score(X,y))
print("决策树 predict: ",tree.predict([[7,5,2,0.5],[7.5,4,7,2]]))
输出训练得分和预测运转截图如下:
2.2运用ID3算法对气候与踢球数据集进行手艺核算,手写E(S, Temperature)、IG(S, Temperature) 、E(S, Humidity)、IG(S, Humidity)、E(S, Windy)、IG(S, Windy)的核算进程
手写图暂时不放了哈,字丑。(略) 记录一下PPT的样板核算进程如下:
E(S) = -[(9/14)log2(9/14) + (5/14)log2 (5/14)] = 0.94
本标题经过我的核算得如下成果:
E(S, Temperature)=0.911 IG(S, Temperature) =0.029
E(S, Humidity)=0.788 IG(S, Humidity)=0.152
E(S, Windy)=0.8932 IG(S, Windy)=0.048
终究,咱们能够得到如下的决策树:
2.3 运用CART算法对气候与踢球数据集进行手艺核算,手写Gini(S, Temperature)、Gini gain(S, Temperature) 、Gini(S, Humidity)、Gini gain(S, Humidity)、Gini(S, Windy)、Gini gain(S, Windy)的核算进程
手写图暂时不放了哈,字丑。(略) 记录一下PPT的样板核算进程如下:
Gini(S) = 1 - [(9/14) + (5/14)] = 0.4591
本标题经过我的核算得如下成果:
Gini(S, Temperature)=0.4405 Gini gain(S, Temperature)=0.0185
Gini(S, Humidity)=0.3674 Gini gain(S, Humidity)=0.0916
Gini(S, Windy)=0.4286 Gini gain(S, Windy)=0.0304
从成果来看,气候预告(outlook)的基尼 增益为0.117,是最高的,因此咱们挑选天 气预告(outlook)作为咱们的根节点。
2.4 装置决策树可视化控件GraphViz和pydotplus包,对鸢尾花分类成果生成决策树可视化图片;
先装置可视化控件GraphViz: 去官网下载装置即可: 官网:
www.graphviz.org/
装置一下pydotplus模块。 装置一下os模块。 先运用os模块,指定一下路径等等信息。
import os
os.environ["PATH"] += os.pathsep + 'C:/Program Files/Graphviz/bin/'
from six import StringIO
dot_data=StringIO()
运用tree.export_graphviz,可视化决策树,如下代码:
tree.export_graphviz(clf, out_file=dot_data
, feature_names=iris.feature_names,
class_names=iris.target_names,
filled=True,
rounded=True,
special_characters=True)
运用pydotplus模块设置图画格式等等信息,如下代码:
import pydotplus
graph =pydotplus.graph_from_dot_data(dot_data.getvalue())
from IPython.display import display,Image
display(Image(graph.create_png()))
指定输出格式,输出为pdf和png俩个
graph.write_png("tree_iris.png")
graph.write_pdf("tree_iris.pdf")
咱们看一下效果图:
2.5 决策树算法之鸢尾花特征分类可视化效果图
三,收获
本次试验收获很大,学会了运用决策树算法4个特征对鸢尾花进行分类,运用ID3算法和CART算法对气候与踢球数据集进行手艺核算,还学会了装置决策树可视化控件GraphViz和pydotplus包,对鸢尾花分类成果生成决策树可视化图片,本次试验让我对机器学习有了愈加扎实的根底和了解。