1

scikit-learn决策树算法类库介绍

scikit-learn决策树算法类库内部实现是使用了调优过的CART树算法,既可以做分类,又可以做回归。分类决策树的类对应的是DecisionTreeClassifier,而回归决策树的类对应的是DecisionTreeRegressor。两者的参数定义几乎完全相同,但是意义不全相同。下面就对DecisionTreeClassifier和DecisionTreeRegressor的重要参数做一个总结,重点比较两者参数使用的不同点和调参的注意点。

2

DecisionTreeClassifier和DecisionTreeClassifier 重要参数调参注意点

为了便于比较,这里我们用表格的形式对DecisionTreeClassifier和DecisionTreeRegressor重要参数要点做一个比较。

除了这些参数要注意以外,其他在调参时的注意点有:

1)当样本少数量但是样本特征非常多的时候,决策树很容易过拟合,一般来说,样本数比特征数多一些会比较容易建立健壮的模型

2)如果样本数量少但是样本特征非常多,在拟合决策树模型前,推荐先做维度规约,比如主成分分析(PCA),特征选择(Losso)或者独立成分分析(ICA)。这样特征的维度会大大减小。再来拟合决策树模型效果会好。

3)推荐多用决策树的可视化(下节会讲),同时先限制决策树的深度(比如最多3层),这样可以先观察下生成的决策树里数据的初步拟合情况,然后再决定是否要增加深度。

4)在训练模型先,注意观察样本的类别情况(主要指分类树),如果类别分布非常不均匀,就要考虑用class_weight来限制模型过于偏向样本多的类别。

5)决策树的数组使用的是numpy的float32类型,如果训练数据不是这样的格式,算法会先做copy再运行。

6)如果输入的样本矩阵是稀疏的,推荐在拟合前调用csc_matrix稀疏化,在预测前调用csr_matrix稀疏化。

3

scikit-learn决策树结果的可视化

决策树可视化化可以方便我们直观的观察模型,以及发现模型中的问题。这里介绍下scikit-learn中决策树的可视化方法。

#完整代码import  matplotlib.pyplot as plt%matplotlib inlineimport numpy as npimport pandas as pdfrom sklearn.datasets import load_irisfrom sklearn import treeiris = load_iris()clf = tree.DecisionTreeClassifier()clf = clf.fit(iris.data, iris.target)with open("iris.dot", 'w') as f:    f = tree.export_graphviz(clf, out_file=f)    from IPython.display import Image  import pydotplusdot_datadot_dat  = tree.export_graphviz(clf, out_file=None,                          feature_names=iris.feature_names,                           class_names=iris.target_names,                           filled=True, rounded=True,                           special_characters=True)graph = pydotplus.graph_from_dot_data(dot_data)Image(graph.create_png())dot_data = tree.export_graphviz(clf, out_file=None)graph = pydotplus.graph_from_dot_data(dot_data) graph.write_pdf("iris.pdf")

1、决策树可视化环境搭建

scikit-learn中决策树的可视化一般需要安装graphviz。主要包括graphviz的安装和python的graphviz插件的安装。

第一步是安装graphviz。下载地址在:http://www.graphviz.org/。如果你是linux,可以用apt-get或者yum的方法安装。如果是windows,就在官网下载msi文件安装。无论是linux还是windows,装完后都要设置环境变量,将graphviz的bin目录加到PATH,比如我是windows,将C:/Program Files (x86)/Graphviz2.38/bin/加入了PATH

第二步是安装python插件graphviz: pip install graphviz

第三步是安装python插件pydotplus。这个没有什么好说的: pip install pydotplus

这样环境就搭好了,有时候python会很笨,仍然找不到graphviz,这时,可以在代码里面加入这一行:

注意后面的路径是你自己的graphviz的bin目录。

2、决策树可视化的三种方法

这里我们有一个例子讲解决策树可视化。

首先载入类库:

from sklearn.datasets import load_irisfrom sklearn import treeimport sysimport os       os.environ["PATH"] += os.pathsep + 'C:/Program Files (x86)/Graphviz2.38/bin/'

接着载入sciki-learn的自带数据,有决策树拟合,得到模型:

现在可以将模型存入dot文件iris.dot。

这时候我们有3种可视化方法,第一种是用graphviz的dot命令生成决策树的可视化文件,敲完这个命令后当前目录就可以看到决策树的可视化文件iris.pdf.打开可以看到决策树的模型图。

第二种方法是用pydotplus生成iris.pdf。这样就不用再命令行去专门生成pdf文件了。

第三种办法是个人比较推荐的做法,因为这样可以直接把图产生在ipython的notebook。代码如下:

在ipython的notebook生成的图如下:

4

DecisionTreeClassifier实例

这里给一个限制决策树层数为4的DecisionTreeClassifier例子。

from itertools import productimport numpy as npimport matplotlib.pyplot as pltfrom sklearn import datasetsfrom sklearn.tree import DecisionTreeClassifier# 仍然使用自带的iris数据iris = datasets.load_iris()X = iris.data[:, [0, 2]]y = iris.target# 训练模型,限制树的最大深度4clf = DecisionTreeClassifier(max_depth=4)#拟合模型clf.fit(X, y)# 画图x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.1),                     np.arange(y_min, y_max, 0.1))Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])Z = Z.reshape(xx.shape)plt.contourf(xx, yy, Z, alpha=0.4)plt.scatter(X[:, 0], X[:, 1], c=y, alpha=0.8)plt.show()

from IPython.display import Image  from sklearn import treeimport pydotplus dot_data = tree.export_graphviz(clf, out_file=None,                          feature_names=iris.feature_names,                           class_names=iris.target_names,                           filled=True, rounded=True,                           special_characters=True)  graph = pydotplus.graph_from_dot_data(dot_data)  Image(graph.create_png()) 

点击下方图片即可阅读

那么如何了解线性回归的原理和算法呢?

分类算法评估中的“它们”有什么用处?

学好Scikit-Learn,

于是你默默地推了一下酷酷的墨镜【上篇】

学会PyTorch,你就是这条街上最靓的仔~

如果你也有想分享的干货,可以登录天池实验室(notebook),包括赛题的理解、数据分析及可视化、算法模型的分析以及一些核心的思路等内容

小天会根据你分享内容的数量以及程度,给予丰富的神秘天池大礼以及粮票奖励。分享成功后你也可以通过下方钉钉群?主动联系我们的社区运营同学(钉钉号: yiwen1991)

天池宝贝们有任何问题,可在戳“留言”评论或加入钉钉群留言,小天会认真倾听每一个你的建议!

?

决策树留一法python代码_ScikitLearn决策树算法类库使用小结相关推荐

  1. 决策树留一法python代码_机器学习模型2 决策树-基于Python sklearn的实现

    1.模型原理 (一)原理 1.原理:引入信息熵(不确定程度)的概念,通过计算各属性下的信息增益程度(信息增益越大,则意味着使用该属性来进行划分所获得的"纯度提升"越大),增益程度最 ...

  2. 决策树留一法python代码_从实例中归纳决策树_人工智能一

    从实例中归纳决策树_人工智能一 18.3.3 从实例中归纳决策树 布尔决策树的一个实例是由一个输入属性向量X以及一个唯一的布尔输出值y组成的.一个实例集合(X1,y1),-,(X12,y12)如图18 ...

  3. scikit-learn决策树算法类库使用小结及可视化方法

    2019独角兽企业重金招聘Python工程师标准>>> 1. scikit-learn决策树算法类库介绍 scikit-learn决策树算法类库内部实现是使用了调优过的CART树算法 ...

  4. scikit-learn决策树算法类库使用小结

    之前对决策树的算法原理做了总结,包括决策树算法原理(上)和决策树算法原理(下).今天就从实践的角度来介绍决策树算法,主要是讲解使用scikit-learn来跑决策树算法,结果的可视化以及一些参数调参的 ...

  5. 在西瓜数据集上用Python实现ID3决策树算法完整代码

    在西瓜数据集上用Python实现ID3决策树算法完整代码 文章目录 1.决策树算法代码ID3.py 2.可视化决策树代码visual_decision_tree.py 3.贴几张运行结果图 1.生成的 ...

  6. Python中应用决策树算法预测客户等级

    ​机器学习越来越多地在企业应用,本文跟大家分享一个采用python,应用决策树算法对跨国食品超市顾客等级进行预测的具体案例.如果想先行了解决策树算法原理,可以阅读文章决策树-ID3算法和C4.5算法. ...

  7. How To Implement The Decision Tree Algorithm From Scratch In Python (从零开始在Python中实现决策树算法)

    How To Implement The Decision Tree Algorithm From Scratch In Python 原文作者:Jason Brownlee 原文地址:https:/ ...

  8. 机器学习决策树DecisionTree以及python代码实现

    机器学习决策树DecisionTree以及python代码实现 1.基本算法原理 2.选择最优特征进行划分 2.1信息增益 2.2信息增益率 2.3基尼系数 4.连续值以及缺失值的处理 4.1连续值的 ...

  9. 决策树剪枝python实现_决策树剪枝问题python代码

    决策树在生长过程中有可能长得过于茂盛,对训练集学习的很好,但对新的数据集的预测效果不好,即过拟合,此时生成的模型泛化能力较差.因此,我们需要对决策树进行剪枝,使得生成的模型具有较强的泛化能力. 为了检 ...

最新文章

  1. 华为任正非谈退休:思维跟不上的时候退,目前是才思泉涌的状态
  2. 动态切换站点样式(换皮肤)
  3. 工业机器人什么情况下会出现奇点_【怎么解释机器人奇点造成的结果?】-工业-有米下载-6miu.com...
  4. 20181213_任务(3D奖品设计+30天单词练习)
  5. 自定义滚动条CSS样式
  6. [探索 .NET 6]02 比较 WebApplicationBuilder 和 Host
  7. esmini接入外部ego车控制
  8. mysql主从同步搭建和故障排除
  9. bootstrap+masonry.js写瀑布流
  10. 计算机组装策划案,产品策划书格式
  11. android auto note 8,三星Galaxy Note 8.0支持flash吗
  12. 编程之美 3.1 字符串移位包含问 复杂度(O(N*K)
  13. mysql补0操作有什么意义?
  14. 啥他妈的是 Nginx?
  15. 官宣 .NET RC 2
  16. 英文名称:DSPE-PEG10-Mal的试剂分子式是C68H127N2O21P
  17. 心电图心电轴怎么计算_心电轴的测量方法
  18. 计算机网络——第三章 数据链路层——课后习题答案
  19. 数学考研基础---线代笔记(行列式)
  20. iOS闪退问题,避免闪退看我就足够了, try catch等方法

热门文章

  1. Visual Studio Code 1.49 发布
  2. 在ASP.NET Identity 2.0中使用声明(Claims)实现用户组
  3. 微软在 Build 2020 上“展示”新版 Edge for Linux
  4. 开源的方舟编译器将进入深圳大学课堂
  5. LINQ to CSV,一种类型安全,动态的高性能方法
  6. vue用html做报表,Vue配置生成无限分割的表格,可快速实现任意复杂报表
  7. 为什么没有看到webcontent_王者荣耀之战坦路玩家心理:队友为什么不支援!我想要和射手换线...
  8. 关于thymeleaf静态资源找不到的问题
  9. linux内核进程抢占,Re: Linux中进程能否被抢占
  10. 在拦截器里放入参数 controller_程序员云旅游:10分钟带你走完SpringMVC里一次HTTP请求处理之路...