1、关于决策树:决策树是一个非参数的监督式学习方法,主要用于分类和回归。算法的目标是通过推断数据特征,学习决策规则从而创建一个预测目标变量的模型。如下如所示,决策树通过一系列if-then-else 决策规则 近似估计一个正弦曲线。

决策树优势:

简单易懂,原理清晰,决策树可以实现可视化

数据准备简单。其他的方法需要实现数据归一化,创建虚拟变量,删除空白变量。(注意:这个模块不支持缺失值)

使用决策树的代价是数据点的对数级别。

能够处理数值和分类数据

能够处理多路输出问题

使用白盒子模型(内部结构可以直接观测的模型)。一个给定的情况是可以观测的,那么就可以用布尔逻辑解释这个结果。相反,如果在一个黑盒模型(ANN),结果可能很难解释

可以通过统计学检验验证模型。这也使得模型的可靠性计算变得可能

即使模型假设违反产生数据的真实模型,表现性能依旧很好。

决策树劣势:

可能会建立过于复杂的规则,即过拟合。为避免这个问题,剪枝、设置叶节点的最小样本数量、设置决策树的最大深度有时候是必要的。

决策树有时候是不稳定的,因为数据微小的变动,可能生成完全不同的决策树。 可以通过总体平均(ensemble)减缓这个问题。应该指的是多次实验。

学习最优决策树是一个NP完全问题。所以,实际决策树学习算法是基于试探性算法,例如在每个节点实现局部最优值的贪心算法。这样的算法是无法保证返回一个全局最优的决策树。可以通过随机选择特征和样本训练多个决策树来缓解这个问题。

有些问题学习起来非常难,因为决策树很难表达。如:异或问题、奇偶校验或多路复用器问题

如果有些因素占据支配地位,决策树是有偏的。因此建议在拟合决策树之前先平衡数据的影响因子。

2、分类

DecisionTreeClassifier 能够实现多类别的分类。输入两个向量:向量X,大小为[n_samples,n_features],用于记录训练样本;向量Y,大小为[n_samples],用于存储训练样本的类标签。

from sklearn import tree

X = [[0, 0], [1, 1]]

Y = [0, 1]

clf = tree.DecisionTreeClassifier()

clf = clf.fit(X, Y)

clf.predict([[2., 2.]])

clf.predict_proba([[2., 2.]])

下面我们使用iris数据集:

from sklearn.datasets import load_iris

from sklearn import tree

iris = load_iris()

clf = tree.DecisionTreeClassifier()

clf = clf.fit(iris.data, iris.target)

# export the tree in Graphviz format using the export_graphviz exporter

with open("iris.dot", 'w') as f:

f = tree.export_graphviz(clf, out_file=f)

# predict the class of samples

clf.predict(iris.data[:1, :])

# the probability of each class

clf.predict_proba(iris.data[:1, :])

安装Graphviz将其添加到环境变量,使用dot创建一个PDF文件。dot -Tpdf iris.dot -o iris.pdf

运行结果在文件夹下会有:

这两个文件。我们打开iris.pdf

你也可以通过安装pydotplus包。安装方式:pip install pydotplus.在Python 中直接生成:

import pydotplus

dot_data = tree.export_graphviz(clf, out_file=None)

graph = pydotplus.graph_from_dot_data(dot_data)

graph.write_pdf("iris.pdf")

下面代码是Sklearn官网上的演示代码:

import numpy as np

import matplotlib.pyplot as plt

from sklearn.datasets import load_iris

from sklearn.tree import DecisionTreeClassifier

# Parameters

n_classes = 3

plot_colors = "bry"

plot_step = 0.02

# Load data

iris = load_iris()

for pairidx, pair in enumerate([[0, 1], [0, 2], [0, 3],

[1, 2], [1, 3], [2, 3]]):

# We only take the two corresponding features

X = iris.data[:, pair]

y = iris.target

# Train

clf = DecisionTreeClassifier().fit(X, y)

# Plot the decision boundary

plt.subplot(2, 3, pairidx + 1)

x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1

y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1

xx, yy = np.meshgrid(np.arange(x_min, x_max, plot_step),

np.arange(y_min, y_max, plot_step))

Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])

Z = Z.reshape(xx.shape)

cs = plt.contourf(xx, yy, Z, cmap=plt.cm.Paired)

plt.xlabel(iris.feature_names[pair[0]])

plt.ylabel(iris.feature_names[pair[1]])

plt.axis("tight")

# Plot the training points

for i, color in zip(range(n_classes), plot_colors):

idx = np.where(y == i)

plt.scatter(X[idx, 0], X[idx, 1], c=color, label=iris.target_names[i],

cmap=plt.cm.Paired)

plt.axis("tight")

plt.suptitle("Decision surface of a decision tree using paired features")

plt.legend()

plt.show()

代码运行结果:

sklearn 决策树例子_Sklearn库例子——决策树分类相关推荐

  1. 利用sklearn库决策树模型对iris数据多分类并进行评估

    1.导入所需要的库 from sklearn.tree import DecisionTreeClassifier from sklearn.datasets import load_iris 2.加 ...

  2. python决策树怎么选择_机器学习|决策树分类与python实现

    目录: 1.决策树简介 2.决策树生成 a) 选择标准--熵 b) 信息增益--ID3算法 c) 信息增益率--C4.5算法 d) Gini系数--CART算法 e) 评价标准--评价函数 3.剪枝操 ...

  3. [Python从零到壹] 十四.机器学习之分类算法五万字总结全网首发(决策树、KNN、SVM、分类对比实验)

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  4. 机器学习算法——决策树算法详细介绍,并使用sklearn实现案例预测,可视化决策树

    目录 一.决策树算法简介 二.决策树分类原理 1.熵 1.1 概念 1.2 案例 2.决策树的划分依据一:信息增益 2.1 概念 2.2 案例: 3.决策树的划分依据二:信息增益率 3.1 概念 3. ...

  5. Python集成机器学习:用AdaBoost、决策树、逻辑回归集成模型分类和回归和网格搜索超参数优化

    最近我们被客户要求撰写关于集成机器的研究报告,包括一些图形和统计输出. Boosting 是一类集成机器学习算法,涉及结合许多弱学习器的预测. 视频:从决策树到随机森林:R语言信用卡违约分析信贷数据实 ...

  6. sklearn基础篇(六)-- 决策树(decision tree)

    决策树是广泛用于分类和回归任务的模型.本质上,它从一层层的if/else问题中进行学习,并得出结论.决策树学习算法包括3部分:特征选择.树的生成和树的剪枝.常用的算法有ID3.C4.5和CART. 想 ...

  7. 基于sklearn的线性回归模型实现多变量决策树

    多变量决策树 1 多变量决策树简介 2 实现思路 3 代码中的函数说明 3.1 class TreeNode 3.2 trainLinear 3.3 binaryTrainSet 3.4 score ...

  8. sklearn初探(三):决策树及其可视化

    sklearn初探(三):决策树及其可视化 前言 这是一个完整的工程,涵盖了从数据获得与处理,最后到构建决策树模型的全部过程.完整的源代码我会在文章最后给出. 概述 DecisionTreeClass ...

  9. 【机器学习】决策树案例三:利用决策树进行泰坦尼克号事故人员存活分类预测

    利用决策树进行泰坦尼克号事故人员存活分类预测 3 利用决策树进行泰坦尼克号事故人员存活分类预测 3.1 导入模块与加载数据 3.2 特征工程 3.3 划分数据 3.4 模型创建与应用 3.5 模型可视 ...

最新文章

  1. 北大青鸟口碑好才真的好
  2. 利用Python进行数据分析(7) pandas基础: Series和DataFrame的简单介绍 一、pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主
  3. 使用Docker for Windows初体验
  4. 实战NFS服务搭建与配置
  5. thinkPHP5中的与原本的字母方法用什么东西替代了?
  6. Oracle系统表查询方法
  7. 12306微信小程序上线 提供余票查询暂不支持购票
  8. hdu3336 Count the string
  9. 视觉尺寸测量设备系统
  10. goland 方法注释_Golang 注释
  11. Macbooster8免费mac清理垃圾软件功能介绍
  12. 微信二级不死域名是什么意思?被封后还能访问吗?
  13. 前K个高频元素[小根堆和大根堆的使用]
  14. 华为手机 从服务器获取安装包信息,华为openGauss 获取并校验安装包
  15. 苹果11怎样设置自动锁屏 iPhone11自动锁屏操作方法
  16. 服务器项目迁移本地,云服务器迁移本地
  17. 制作STG游戏的初步构思
  18. 2020年6月电子学会Python等级考试试卷(一级)考题解析
  19. FastDFS+Nginx安装配置
  20. 编写一程序,输入月份号,输出该月的英文月名。例如,输入3,则输出“March“,要求用指针数值处理。

热门文章

  1. vi/vim: 文件浏览和缓冲区浏览
  2. Custom Basic Authentication for IIS
  3. OpenCV-闭运算(CLOSE)
  4. 西安计算机二级12月,2017年12月计算机二级MS Office习题答案(一)
  5. python实习目的_python爬虫系列---为什么要学习爬虫
  6. vue 修改文件怎么启动_Jupyter Notebook如何修改启动时的默认文件路径(Windows系统)...
  7. Sublime Text中全局查找方法
  8. 剑指offer面试题[21]包含min函数的栈
  9. 安装LR提示“此计算机缺少 vc2005_sp1_with_atl_fix_redist,请安装所有缺少的必要组件,然后重新运行此安装“
  10. 21天Jmeter打卡Day10线程用户之setUp和tearDown