sklearn学习笔记:决策树
程序员文章站
2024-02-03 21:01:04
...
1. DecisionTreeClassifier参数介绍:
参数 | 取值 |
criterion 特征选择标准 | ‘gini’(default),表示基尼系数,为CART算法;‘entropy’,表示信息增益,为ID3算法 |
splitter 特征划分点选择标准 | 'best'(default),表示从所有划分点中找出最优的划分点;‘random’,表示随机选择划分点 |
max_features 划分时考虑的最大特征数 | ‘None’(default),表示划分时考虑所有特征数;‘log2’;‘sqrt’或‘auto’ |
max_depth 决策树最大深度 | m默认不输入,即不限制树的深度,常用取值为10-100 |
min_samples_split 内部节点在划分所需最小样本数 | 默认为2,如果某节点的样本数小于这个值,则不再继续划分 |
min_sample_leaf 叶子节点最少样本数 | 默认为1,如果叶子节点的样本数小于这个值,则会被剪枝 |
min_weight_fraction_leaf 叶子节点最小的样本权重 | 默认为0,如果叶子节点所有样本的权重和小于这个值,则会被剪枝。当有较多样本有缺失、或者各个类别的样本数量差别很大时,我们需要引入样本权重,应该关注该值的设置 |
max_leaf_nodes 最大叶子节点树 | ‘None’(default),即不限制 |
class_weight 类别权重、 min_impurity_split 节点划分最小不纯度、 presort 数据是否排序 |
presort:'False'(default) |
(1)安装homebrew,打开terminal,输入命令:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
(2)homebrew安装完成后,安装graphviz,输入命令:brew install graphviz
3. 完整代码:
# encoding: utf-8
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn import tree
import pydotplus
iris = datasets.load_iris()
iris_X = iris.data
iris_y = iris.target
X_train, X_test, y_train, y_test = train_test_split(iris_X, iris_y, test_size=0.25)
tree_model = tree.DecisionTreeClassifier(max_depth = 4)
tree_model.fit(X_train, y_train)
# with open("iris.dot", 'w') as f:
# f = tree.export_graphviz(tree_model, out_file = f)
dot_data = tree.export_graphviz(tree_model, out_file = None)
graph = pydotplus.graph_from_dot_data(dot_data)
graph.write_pdf("iris.pdf")
predict = tree_model.predict(X_test)
print predict
输出结果:
[2 0 0 1 1 2 0 0 1 0 0 2 0 2 1 2 1 2 1 2 0 0 0 2 1 1 2 1 2 2 0 1 2 2 0 2 0 2]
打开根目录下的iris.pdf,生成的决策树为: