Press "Enter" to skip to content

决策树

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

决策树算法是从数据的特征出发,并以此作为基础划分不同的类。

 

简介

 

也就是如何通过已经存在的数据构建一个决策树,一般有如下的三种方式。

ID3 通过信息熵进行构建。
C4.5 信息增益比
Classification And Regression Trees, CART 通过基尼指数构建。

Scikit-Learn

 

可以使用该库自带的鸢尾花数据集,做决策树训练、测试、可视化,如下是决策树的训练以及可视化操作。

 

import pydotplus
import sklearn.tree as tree
import sklearn.datasets as ds
iris = ds.load_iris()
dtree = tree.DecisionTreeClassifier()
dtree = dtree.fit(iris.data, iris.target)
# 直接导出graphviz格式的文件,如果需要其它格式,应该再次转换
# --> PDF格式 dot -Tpdf iris.dot -o iris.pdf
# --> PNG格式 dot -Tpng iris.dot -o iris.png
#with open("iris.dot", 'w') as f:
#    tree.export_graphviz(dtree, out_file=f, feature_names=iris.feature_names)
dot = tree.export_graphviz(dtree, out_file=None, feature_names=iris.feature_names)
graph = pydotplus.graph_from_dot_data(dot)
graph.write_pdf('iris.pdf')

 

如下是通过训练然后测试。

 

import sklearn.tree as tree
import sklearn.datasets as ds
import sklearn._selection as model
iris = ds.load_iris()
d_train, d_test, t_train, t_test = model.train_test_split(iris.data, iris.target, test_size=0.4)
dtree = tree.DecisionTreeClassifier()
dtree = dtree.fit(d_train, t_train)
match = 0
predict = dtree.predict(d_test)
for i in range(len(predict)):
    if predict[i] == t_test[i]:
        match += 1
print("Accuracy: %.3f%%" % (float(match/len(predict)) * 100))

 

在 Windows 中,可以通过 graphviz.gitlab.io 下载相关的 GraphViz ,然后将对应的 bin 路径添加到 PATH 环境变量中。

 

也可以使用 pydotplus 包,不过依然依赖上述的 GraphViz 工具。

 

ID3

 

ID3 算法是由 Ross Quinlan 在 1986 年提出,该算法是以信息论为基础,以信息熵和信息增益为衡量标准,从而实现对数据的归纳分类。

Be First to Comment

发表评论

邮箱地址不会被公开。 必填项已用*标注