python数据挖掘决策树算法
决策树是一个非参数的监督式学习方法,主要用于分类和回归。算法的目标是通过推断数据特征,学习决策规则从而创建一个预测目标变量的模型。如下如所示,决策树通过一系列if-then-else 决策规则 近似估计一个正弦曲线。
决策树优势:
- 简单易懂,原理清晰,决策树可以实现可视化
- 数据准备简单。其他的方法需要实现数据归一化,创建虚拟变量,删除空白变量。(注意:这个模块不支持缺失值)
- 使用决策树的代价是数据点的对数级别。
- 能够处理数值和分类数据
- 能够处理多路输出问题
- 使用白盒子模型(内部结构可以直接观测的模型)。一个给定的情况是可以观测的,那么就可以用布尔逻辑解释这个结果。相反,如果在一个黑盒模型(ANN),结果可能很难解释
- 可以通过统计学检验验证模型。这也使得模型的可靠性计算变得可能
- 即使模型假设违反产生数据的真实模型,表现性能依旧很好。
决策树劣势:
- 可能会建立过于复杂的规则,即过拟合。为避免这个问题,剪枝、设置叶节点的最小样本数量、设置决策树的最大深度有时候是必要的。
- 决策树有时候是不稳定的,因为数据微小的变动,可能生成完全不同的决策树。 可以通过总体平均(ensemble)减缓这个问题。应该指的是多次实验。
- 学习最优决策树是一个NP完全问题。所以,实际决策树学习算法是基于试探性算法,例如在每个节点实现局部最优值的贪心算法。这样的算法是无法保证返回一个全局最优的决策树。可以通过随机选择特征和样本训练多个决策树来缓解这个问题。
- 有些问题学习起来非常难,因为决策树很难表达。如:异或问题、奇偶校验或多路复用器问题
- 如果有些因素占据支配地位,决策树是有偏的。因此建议在拟合决策树之前先平衡数据的影响因子。
import numpy as np
多输出问题
多输出问题时需要预测多个输出的监督式学习问题。即Y是一个2d的向量,大小为[n_samples, n_outputs]。
当输出之间不相关时,一个简单的解决办法是建立n个独立模型。对于每一个输出,使用这些模型独立预测这每个输出。由于输出是和相同的输入相关的,所以一个更好的办法是建立一个能够持续预测所有输出的单一模型。首先,系统需要的训练时间更少了,因为只建立了一个模型。其次准确性也会得到提高。
决策树的策略需要修改以支持多分类问题。
- 叶子上存储n个输出变量
- 使用不同的标准计算所有n输出的平均减少
这一节是关于 DecisionTreeClassifier 和DecisionTreeRegressor的一些知识点。如果一个决策树的输出向量Y大小为[n_samples, n_outputs],预测量有:
- predict:输出n个预测值
- predict_proba:输出有n个输出的向量组成的列表。
多输出的回归的例子:输入X是一个单一的值,输出Y是输入X的Sine和Cosine
| 函数 | 函数功能 |
|---|---|
apply(X[, check_input]) |
返回每个样本的叶节点的预测序号 |
decision_path(X[, check_input]) |
返回决策树的决策路径 [n_samples, n_nodes] |
fit(X, y[, sample_weight, check_input, …]) |
从训练数据建立决策树,返回一个对象 |
| fit_transform(X[, y]) | 将数据X转换[n_samples, n_features_new] |
| get_params([deep]) | 得到估计量的参数,返回一个映射 |
| predict(X[, check_input]) | 预测X的分类或者回归,返回[n_samples] |
| predict_log_proba(X) | 预测输入样本的对数概率,返回[n_samples, n_classes] |
| predict_proba(X[, check_input]) | 预测输入样本的属于各个类的概率[n_samples, n_classes] |
| score(X, y[, sample_weight]) | 返回对于测试数据的平均准确率 |
| set_params(**params) | 设置估计量的参数 |
| transform(*args, **kwargs) | 将输入参数X减少的最重要的特征,返回[n_samples, n_selected_features] |
python数据挖掘决策树算法的更多相关文章
- 数据挖掘 决策树算法 ID3 通俗演绎
决策树是对数据进行分类,以此达到预測的目的.该决策树方法先依据训练集数据形成决策树,假设该树不能对全部对象给出正确的分类,那么选择一些例外添�到训练集数据中,反复该过程一直到形成正确的决策集.决策树代 ...
- 吴裕雄--天生自然python机器学习:决策树算法
我们经常使用决策树处理分类问题’近来的调查表明决策树也是最经常使用的数据挖掘算法. 它之所以如此流行,一个很重要的原因就是使用者基本上不用了解机器学习算法,也不用深究它 是如何工作的. K-近邻算法可 ...
- python机器学习笔记 ID3决策树算法实战
前面学习了决策树的算法原理,这里继续对代码进行深入学习,并掌握ID3的算法实践过程. ID3算法是一种贪心算法,用来构造决策树,ID3算法起源于概念学习系统(CLS),以信息熵的下降速度为选取测试属性 ...
- ID3和C4.5分类决策树算法 - 数据挖掘算法(7)
(2017-05-18 银河统计) 决策树(Decision Tree)是在已知各种情况发生概率的基础上,通过构成决策树来判断其可行性的决策分析方法,是直观运用概率分析的一种图解法.由于这种决策分支画 ...
- 数据挖掘中 决策树算法实现——Bash
数据挖掘中 决策树算法实现——Bash 博客分类: 数据挖掘 决策树 bash 非递归实现 标准信息熵 数据挖掘决策树bash非递归实现标准信息熵 一.决策树简介: 关于决策树,几乎是数据挖掘分类算法 ...
- day-8 python自带库实现ID3决策树算法
前一天,我们基于sklearn科学库实现了ID3的决策树程序,本文将基于python自带库实现ID3决策树算法. 一.代码涉及基本知识 1. 为了绘图方便,引入了一个第三方treePlotter模块进 ...
- 决策树算法的Python实现—基于金融场景实操
决策树是最经常使用的数据挖掘算法,本次分享jacky带你深入浅出,走进决策树的世界 基本概念 决策树(Decision Tree) 它通过对训练样本的学习,并建立分类规则,然后依据分类规则,对新样本数 ...
- Kaggle竞赛入门:决策树算法的Python实现
本文翻译自kaggle learn,也就是kaggle官方最快入门kaggle竞赛的教程,强调python编程实践和数学思想(而没有涉及数学细节),笔者在不影响算法和程序理解的基础上删除了一些不必要的 ...
- Python数据挖掘之决策树DTC数据分析及鸢尾数据集分析
Python数据挖掘之决策树DTC数据分析及鸢尾数据集分析 今天主要讲述的内容是关于决策树的知识,主要包括以下内容:1.分类及决策树算法介绍2.鸢尾花卉数据集介绍3.决策树实现鸢尾数据集分析.希望这篇 ...
随机推荐
- django请求周期和请求信息
Django的请求周期 1,概述 首先我们知道HTTP请求及服务端响应中传输的所有数据都是字符串. 在Django中,当我们访问一个的url时,会通过路由匹配进入相应的html网页. 那么: Djan ...
- cnblogs排版样式预览
说明:关于本博主题及样式来源于[GitHub]:本博总体排版目录样式风格参照博文[修仙成神之路]进行预览:参照本博设置可参考博文[设置跟本博一样的效果]本博之前发表过的博文存在样式不协调,后期会逐一完 ...
- 数据库 MySQL:Windows 环境安装教程
1. 双击 MySQL 安装包,出现安装界面,选择“next” 2. 勾选接受协议,点击“next” 3. 安装类型选择自定义“Custom”,点击“next” 4. 选择安装路径,点击“next” ...
- visual studio 和visual studio code 的区别是什么?
区别有三: 区别一:含义不一样. Visual Studio(简称VS)是美国微软公司的开发工具包系列产品,是一个基本完整的开发工具集,它包括了整个软件生命周期中所需要的大部分工具,如UML工具.代码 ...
- 记录截取tableview图的方法
// 截图 - (void)screenShots{ UITableView *shadowView = mainTab; // 开启图片上下文 UIGraphicsBeginImageContext ...
- [AHOI2007]密码箱 (数学 + 暴力)
链接:https://ac.nowcoder.com/acm/problem/19877来源:牛客网 题目描述 在一次偶然的情况下,小可可得到了一个密码箱,听说里面藏着一份古代流传下来的藏宝图,只要能 ...
- Could not load file or assembly "\win32_x86\dotnet1\crdb_adoplus.dll' or one of its dependencies.
Could not load file or assembly 'file:///C:\Program Files (x86)\SAP BusinessObjects\Crystal Repor ...
- http range request
range request: 要求实现该功能需要指定下载的实体范围
- python中global的用法——再读python简明教程
今天看了知乎@萧井陌的编程入门指南,想重温一下 <python简明教程>,对global的用法一直不太熟练,在此熟练一下,并实践一下python中list.tuple.set作为参数的区别 ...
- Python: 关于 sys.stdout.flush()
stackoverflow https://stackoverflow.com/questions/10019456/usage-of-sys-stdout-flush-method Python's ...