sklearn学习笔记:决策树

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


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值