Scikit-Learn与决策树
Scikit-Learn(决策树)可以用于方法分类和回归。
一、分类
sklearn.tree.DecisionTreeClassifier(criterion='gini', splitter='best', max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=None, random_state=None, max_leaf_nodes=None, min_impurity_split=1e-07, class_weight=None, presort=False)参数探讨
- criterion :('Gini'、‘entropy’)表示在基于特征划分数据集合时,选择特征的标准。默认是’gini‘,即'Gini impurity'(Gini不纯度),还可以是criterion='entropy'。Gini不纯度表示该Gini度量是指随机选择集合中的元素,根据集合中label的分布将该元素赋予分类,该元素分类错误的几率;entropy则表示采用信息增益来选择特征。别人看法:criterion=entropy应该理解为决策树采用的是ID3算法,而不是cart树。
- splitter :('best' , 'random')表示在构造树时,选择结点的原则,默认是splitter='best',即选择最好的特征点分类,比如基于信息增益分类时,则选择信息增益最大的特征点,还可以是'random'
- max_depth :int,default=None,表示树的最大深度。默认为"None",表示树的最大深度。如果是"None",则节点会一直扩展直到所有的叶子都是纯的或者所有的叶子节点都包含少于min_samples_split个样本点。忽视max_leaf_nodes是不是为None。
- min_samples_split :int,float,optional(default=2),区分一个内部节点需要的最少的样本数。1.如果是int,将其最为最小的样本数。2.如果是float,min_samples_split是一个百分率并且ceil(min_samples_split*n_samples)是每个分类需要的样本数。ceil是取大于或等于指定表达式的最小整数。
- min_samples_leaf :int,float,optional(default=1),一个叶节点所需要的最小样本数。 1.如果是int,则其为最小样本数。 2.如果是float,则它是一个百分率并且ceil(min_samples_leaf*n_samples)是每个节点所需的样本数。
- min_weight_fraction_leaf :float,optional(default=0),如果设置为0,则表示所有样本的权重是一样的
- max_features :这个参数表示在划分数据集时考虑的最多的特征值数量,根据数据类型表示的意义也不同。int值,在每次split时,最大特征数;float,表示百分数,即(max_features * n_features);'auto'->max_features=sqrt(n_features);'sqrt'->max_features=sqrt(n_features);
- max_leaf_nodes :int,None,optional(default=None),主要是在最优分类中考虑
- class_weight :dict,list of dicts,"Banlanced" or None,可选(默认为None)如果没有指定,所有类的权值都为1。对于多输出问题,一列字典的顺序可以与一列y的次序相同。 "balanced"模型使用y的值去自动适应权值,并且是以输入数据中类的频率的反比例。如果sample_weight已经指定了,这些权值将于samples以合适的方法相乘。
- persort :bool,可选(默认为False)是否预分类数据以加速训练时最好分类的查找。在有大数据集的决策树中,如果设为true可能会减慢训练的过程。当使用一个小数据集或者一个深度受限的决策树中,可以减速训练的过程。
- min_impurity_split :float, optional (default=1e-7),树增长停止阈值,仅仅当他的impurity超过阈值时才会继续向下分解,否则会成为叶结点
例子:
from sklearn import tree X = [[1, 1],[1, 1], [1, 0],[0, 1], [0, 1]]
Y = [1, 1, 0, 0, 0] clf = tree.DecisionTreeClassifier(criterion='entropy')
clf = clf.fit(X, Y)
#predict_proba(X, check_input=True) 预测x中的分类概率
result = clf.predict([0,0])
print result
训练后,我们可以使用导出器以Graphviz(需要单独安装)格式导出树export_graphviz 。
with open("iris.dot", 'w') as f:
f = tree.export_graphviz(clf, out_file=f)
然后我们可以使用的Graphviz的dot工具来创建一个PDF文件(或任何其他支持的文件类型)
dot -Tpdf iris.dot -o iris.pdf
二、回归
sklearn.tree.DecisionTreeRegressor(criterion='mse', splitter='best', max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=None, random_state=None, max_leaf_nodes=None, min_impurity_split=1e-07, presort=False)
- criteria:string,可选(default =“mse”)。测量分割质量的功能。对于均方误差,支持的标准是“mse”,其等于作为特征选择标准的方差减小,以及平均绝对误差的“mae”。
其他参与与DecisionTreeClassifier类似
from sklearn import tree X = [[1],[2],[3],[4],[5],[6]]
Y = [1,2,3,4,5,6] clf = tree.DecisionTreeRegressor(criterion='mae')
clf = clf.fit(X, Y)
result = clf.predict([4])
print result
输出:
[ 4.]
Scikit-Learn与决策树的更多相关文章
- scikit learn 模块 调参 pipeline+girdsearch 数据举例:文档分类 (python代码)
scikit learn 模块 调参 pipeline+girdsearch 数据举例:文档分类数据集 fetch_20newsgroups #-*- coding: UTF-8 -*- import ...
- (原创)(三)机器学习笔记之Scikit Learn的线性回归模型初探
一.Scikit Learn中使用estimator三部曲 1. 构造estimator 2. 训练模型:fit 3. 利用模型进行预测:predict 二.模型评价 模型训练好后,度量模型拟合效果的 ...
- (原创)(四)机器学习笔记之Scikit Learn的Logistic回归初探
目录 5.3 使用LogisticRegressionCV进行正则化的 Logistic Regression 参数调优 一.Scikit Learn中有关logistics回归函数的介绍 1. 交叉 ...
- Scikit Learn: 在python中机器学习
转自:http://my.oschina.net/u/175377/blog/84420#OSC_h2_23 Scikit Learn: 在python中机器学习 Warning 警告:有些没能理解的 ...
- Scikit Learn
Scikit Learn Scikit-Learn简称sklearn,基于 Python 语言的,简单高效的数据挖掘和数据分析工具,建立在 NumPy,SciPy 和 matplotlib 上.
- Query意图分析:记一次完整的机器学习过程(scikit learn library学习笔记)
所谓学习问题,是指观察由n个样本组成的集合,并根据这些数据来预测未知数据的性质. 学习任务(一个二分类问题): 区分一个普通的互联网检索Query是否具有某个垂直领域的意图.假设现在有一个O2O领域的 ...
- Linear Regression with Scikit Learn
Before you read This is a demo or practice about how to use Simple-Linear-Regression in scikit-lear ...
- 如何使用scikit—learn处理文本数据
答案在这里:http://www.tuicool.com/articles/U3uiiu http://scikit-learn.org/stable/modules/feature_extracti ...
- 机器学习框架Scikit Learn的学习
一 安装 安装pip 代码如下:# wget "https://pypi.python.org/packages/source/p/pip/pip-1.5.4.tar.gz#md5=83 ...
- Python第三方库(模块)"scikit learn"以及其他库的安装
scikit-learn是一个用于机器学习的 Python 模块. 其主页:http://scikit-learn.org/stable/. GitHub地址: https://github.com/ ...
随机推荐
- php面向对象3
类的定义 基本定义 class 类名{ 访问修饰符 成员属性; 访问修饰符 成员方法; } 说明: ①类一定要class关键词修饰 ②类名的规范说明,使用大驼峰法 ③php 中,类名不区分大小写.但是 ...
- 非滤波单目视觉slam笔记1
非滤波单目视觉slam 主要分为以下8部分 数据类型 数据关联 初始化 位姿估计 地图维护 地图生成 失效恢复 回环检测 数据类型 直接法(稠密,半稠密) 基本原理是亮度一致性约束,\(J(x,y) ...
- linux 下配置 MAVEN
1.下载maven http://maven.apache.org/download.cgi 2.解压 tar xzvf apache-maven-3.1.0.tar.gz 3.配置环境变量 sud ...
- 精通JavaScipt第二版笔记——特性、函数和对象
前言:感觉这本书只有第二章 第三章有点看头 基本类型和引用类型 基本类型:字符串 数字 布尔值 null(待确定) undifined 引用类型:对象 数组 引用传递 保存的只是对象的地址 var o ...
- cordova.js的坑
最近在使用cordova开发app,一开始只引用了cordova.js,cordova通过function exec(){}来链接本地和H5,之前代码被下载到了本地,在苹果和android上都能实现功 ...
- 查询sql表列名
--查询sql 查询表列名Select Name FROM SysColumns Where id=Object_Id('Tab') --查询sql数据库表列名称select name from sy ...
- php中的date函数
一.带零 echo date('Y-m-d');2012-08-08二.不带零 echo date('Y-n-j');2012-8-8
- 遇到looper之类关于消息循环的
原因大概是因为无法创建消息循环,这时候要考虑函数是否要在主线程或者不在主线程中进行,改一下即可
- CSS3学习系列之背景相关样式(二)
在border-radius属性中指定两个半径 在border-radius属性中,可以指定两个半径,指定方法如下所示: border-radius:40px 20px; 针对这种情况,各种浏览器的处 ...
- Tomcat学习笔记(一)一个简单的Web服务器
内容为<深入剖析Tomcat>第一章重点,以及自己的总结,如有描述不清的,可查看原书. 一.HTTP协议: 1.定义:用于服务器与客户端的通讯的协议,允许web服务器和浏览器通过互联网进行 ...