欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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)
2. 前期工作:下载并安装graphviz,用于生成决策树图

(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,生成的决策树为:

sklearn学习笔记:决策树