决策树

作者: 上行彩虹人 | 来源:发表于2019-06-16 11:05 被阅读0次
# 导入相应模块和数据集
from sklearn import tree
from sklearn.datasets import load_wine
from sklearn.model_selection import train_test_split
# 加载数据
wine = load_wine()

数据信息

wine.data.shape
#(178, 13)
wine.target
'''
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1,
       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2,
       2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
       2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
       2, 2])
'''
import pandas as pd
pd.concat([pd.DataFrame(wine.data),pd.DataFrame(wine.target)],axis=1)
显示数据

划分数据集

# 划分训练集和测试集
Xtrain,Xtest,Ytrain,Ytest = train_test_split(wine.data,wine.target,test_size=0.3)
Xtrain.shape
Xtest.shape
#(54, 13)

决策树创建

# 创建决策树模型      random_state=30类似于确定随机数种子,保证生成的决策树不变
clf = tree.DecisionTreeClassifier(criterion='entropy',random_state=30)
clf.fit(Xtrain,Ytrain)
score = clf.score(Xtest,Ytest)
score
# 0.9629629629629629

可视化决策树

# 画出决策树
feature_name = ['酒精','苹果酸','灰','灰的碱性','镁','总酚'
                ,'类黄酮','非黄烷类酚类','花青素','颜色强度','色调'
               ,'od/280od315稀释葡萄酒','脯氨酸']
import graphviz
dot_data = tree.export_graphviz(clf
                               ,feature_names=feature_name
                               ,filled=True # 不同颜色
                               ,rounded=True)# 圆角
graph = graphviz.Source(dot_data)
graph
可视化结果

分析重要信息

# 重要特征
clf.feature_importances_
[*zip(feature_name,clf.feature_importances_)]
[('酒精', 0.0),
 ('苹果酸', 0.0),
 ('灰', 0.0),
 ('灰的碱性', 0.0),
 ('镁', 0.0),
 ('总酚', 0.0),
 ('类黄酮', 0.3990915395984506),
 ('非黄烷类酚类', 0.0),
 ('花青素', 0.0),
 ('颜色强度', 0.4679552572083532),
 ('色调', 0.034102883482108784),
 ('od/280od315稀释葡萄酒', 0.0),
 ('脯氨酸', 0.0988503197110873)]

决策树的裁剪

# 决策树的裁剪 防止过拟合
# 常见使用前剪枝
# max_depth 限制树的深度
# min_samples_leaf 保证节点分支后至少有多少个样本
# min_samples_split 保证节点有多少样本时才允许分支
clf = tree.DecisionTreeClassifier(criterion='entropy'
                                  ,random_state=30
                                  ,max_depth=2
                                  ,min_samples_leaf=10
                                  ,min_samples_split=10)
clf = clf.fit(Xtrain,Ytrain)
score = clf.score(Xtest,Ytest)
score
# 0.7962962962962963

可视化结果

dot_data = tree.export_graphviz(clf
                               ,feature_names=feature_name
                               ,filled=True # 不同颜色
                               ,rounded=True)# 圆角
graph = graphviz.Source(dot_data)
graph
3层决策树

其它一些接口

# 一些重要属性和接口
clf.apply(Xtest) # 返回野猪节点所在索引
'''
array([4, 1, 4, 1, 1, 4, 4, 3, 4, 4, 1, 4, 4, 3, 3, 4, 4, 1, 3, 3, 1, 1,
       4, 3, 1, 3, 1, 3, 1, 1, 3, 4, 4, 3, 4, 3, 4, 1, 3, 4, 4, 4, 1, 4,
       4, 4, 4, 4, 3, 3, 4, 4, 4, 4], dtype=int64)
'''

相关文章

  • 机器学习6-决策树

    一. 决策树概述 1.1 什么是决策树 决策树输入: 测试集决策树输出: 分类规则(决策树) 1.2 决策树算法概...

  • 决策树

    1、决策树 决策树学习通常包括3个步骤: 特征选择。 决策树生成。 决策树剪枝。 决策树的学习目标是:根据给定的训...

  • 决策树

    决策树 决策树模型与学习 特征选择 决策树的生成 决策树的剪枝 CART 算法 决策树模型呈树形结构,在分类问题中...

  • 决策树算法总结

    目录 一、决策树算法思想 二、决策树学习本质 三、总结 一、决策树(decision tree)算法思想: 决策树...

  • 机器学习 - 决策树算法[一]

    1 决策树模型与学习 1.1 决策树模型 决策树定义: 分类决策树模型是一种描述对实例进行分类的树形结构。决策树由...

  • 机器学习系列(三十六)——回归决策树与决策树总结

    本篇主要内容:回归决策树原理、回归树学习曲线、决策树总结 回归决策树原理 回归决策树树是用于回归的决策树模型,回归...

  • [机器学习]决策树

    决策树 @(技术博客)[机器学习, 决策树, python] 学习决策树首先要搞清楚决策树是什么(what),在弄...

  • 经典机器学习系列之【决策树详解】

      这节我们来讲说一下决策树。介绍一下决策树的基础知识、决策树的基本算法、决策树中的问题以及决策树的理解和解释。 ...

  • 第5章 决策树

    内容 一、决策树内容简介 二、决策树的模型与学习 三、特征选择 四、决策树生成 五、决策树剪枝 六、CART算法 ...

  • 决策树与随机森林

    PART I 决策树 (Decision Tree) 决策树基本知识 决策树何时停止生长:(I) all leaf...

网友评论

    本文标题:决策树

    本文链接:https://www.haomeiwen.com/subject/hziwfctx.html