Python sklearn决策树
#妖言惑众 人气:0决策树模型
决策树(decision tree)是一种基本的分类与回归方法。
分类决策树模型是一种描述对实例进行分类的树形结构。决策树由结点(node)和有向边(directed edge)组成。结点有两种类型:内部结点(internal node)和叶结点(leaf node)。内部结点表示一个特征或属性,叶结点表示一个类。
用决策树分类,从根结点开始,对实例的某一特征进行测试,根据测试结果,将实例分配到其子结点;这时,每一个子结点对应着该特征的一个取值。如此递归地对实例进行测试并分配,直至达到叶结点。最后将实例分到叶结点的类中。
用于预测一个人是否肥胖或不肥胖的决策树
决策树学习
决策树学习算法包括3部分:特征选择、树的生成和树的剪枝。常用的算法有ID3、 C4.5和CART。
1、特征选择的目的在于选取对训练数据能够分类的特征。特征选择的关键是其准则。常用的准则如下:
(1)样本集合D对特征A的信息增益(ID3)
(2)样本集合D对特征A的信息增益比(C4.5)
(3)样本集合D的基尼指数(CART)
2.决策树的生成。通常使用信息增益最大、信息增益比最大或基尼指数最小作为特征选择的准则。决策树的生成往往通过计算信息增益或其他指标,从根结点开始,递归地产生决策树。这相当于用信息增益或其他准则不断地选取局部最优的特征,或将训练集分割为能够基本正确分类的子集。
3.决策树的剪枝。由于生成的决策树存在过拟合问题,需要对它进行剪枝,以简化学到的决策树。决策树的剪枝,往往从已生成的树上剪掉一些叶结点或叶结点以上的子树,并将其父结点或根结点作为新的叶结点,从而简化生成的决策树。
使用Scikit-learn进行决策树分类
import numpy as np from sklearn.datasets import load_iris from sklearn import tree import matplotlib.pyplot as plt iris=load_iris() print(iris.feature_names) print(iris.target_names) #划分数据集 removed =[0,50,100] new_target = np.delete(iris.target,removed) new_data = np.delete(iris.data,removed, axis=0) #训练分类器 clf = tree.DecisionTreeClassifier() # 定义决策树分类器 clf=clf.fit(new_data,new_target) prediction = clf.predict(iris.data[removed]) print("Original Labels",iris.target[removed]) print("Labels Predicted",prediction) #绘制决策树 plt.figure(figsize=(15, 10)) tree.plot_tree(clf, feature_names=iris.feature_names, filled=True) plt.show()
参考链接传送门
加载全部内容