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/ ...
随机推荐
- Quartz源码分析
先简单介绍一下quartz,Quartz是一个功能丰富的开源作业调度库,可以集成到几乎任何Java应用程序中 - 从最小的独立应用程序到最大的电子商务系统.quartz可用于创建执行数十,数百甚至数十 ...
- OSS web直传 ajax方式 上传图片、文件
部分js代码 send_request = function(){//这是从后台获取认证策略等信息. var htmlobj=$.ajax({url:root+"/service/polic ...
- cadence pcb 设计学习记录提纲
Cadence软件是一款"一站式"的电气EDA软件系统.因能力所限,此处仅涉及使用cadence软件绘制PCB.日后随着对软件使用程度的加深,自己打算学习使用cadence软件的原 ...
- 关于HTML学习整理(一)
新人,自己整理,第一次发,以后慢慢整理,欢迎指点,那些链接怎么做的,希望有人告知一下,谢谢! HTML页面写法,标签成对出现,可嵌套使用 <html> <head> <t ...
- 关于对WEB标准以及W3C的理解与认识问题
web标准简单来说可以分为结构.表现和行为.其中结构主要是有HTML标签组成.或许通俗点说,在页面body里面我们写入的标签都是为了页面的结构.表现即指css样式表,通过css可以是页面的结构标签更具 ...
- Entity Framework入门教程:什么是Entity Framework
Entity Framework简介 Entity Framework是微软提供的一个O/RM(对象关系映射)框架.它基于ADO.NET,为开发人员提供了一种自动化的机制来访问和存储数据库中的数据. ...
- Spring两种代理区别
Spring的两种代理JDK和CGLIB的区别浅谈: Java动态代理是利用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用invokeHandler类来处理: 而cglib动态代理是利用a ...
- 带你重拾JavaScript(2)之console的你所不知道的功能
JavaScript最常用的调试工具就是console.info()了.console是浏览器中window对象的属性之一,由浏览器对象模型(BOM)提供,作用是访问浏览器控制台,你可以通过conso ...
- [leetcode-516-Longest Palindromic Subsequence]
Given a string s, find the longest palindromic subsequence's length in s. You may assume that the ma ...
- 【Android Developers Training】 100. 使用Intent修改联系人数据
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...