版权声明:<—— 本文为作者呕心沥血打造,若要转载,请注明出处@http://blog.csdn.net/gamer_gyt <——

目录(?)[+]

======================================================================
本系列博客主要参考 Scikit-Learn 官方网站上的每一个算法进行,并进行部分翻译,如有错误,请大家指正   
======================================================================

决策树的算法分析与Python代码实现请参考之前的一篇博客:点击阅读   接下来我主要演示怎么使用Scikit-Learn完成决策树算法的调用

iris数据集说明:

点击查看

决策树算法的优点:
1:理解和解释起来简单,且决策树模型可以想象
2:需要准备的数据量不大,而其他的技术往往需要很大的数据集,需要创建虚拟变量,去除不完整的数据,但是该算法对于丢失的数据不能进行准确的预测
3:决策树算法的时间复杂度(即预测数据)是用于训练决策树的数据点的对数
4:能够处理数字和数据的类别(需要做相应的转变),而其他算法分析的数据集往往是只有一种类型的变量
5:能够处理多输出的问题
6:使用白盒模型,如果给定的情况是在一个模型中观察到的,该条件的解释很容易解释的布尔逻辑,相比之下,在一个黑盒子模型(例如人工神经网络),结果可能更难以解释
7:可能使用统计检验来验证模型,这是为了验证模型的可靠性
8:从数据结果来看,它执行的效果很好,虽然它的假设有点违反真实模型

决策树算法的缺点:
1:决策树算法学习者可以创建复杂的树,但是没有推广依据,这就是所谓的过拟合,为了避免这种问题,出现了剪枝的概念,即设置一个叶子结点所需要的最小数目或者设置树的最大深度
2:决策树的结果可能是不稳定的,因为在数据中一个很小的变化可能导致生成一个完全不同的树,这个问题可以通过使用集成决策树来解决
3:众所周知,学习一恶搞最优决策树的问题是NP——得到几方面完全的优越
性,甚至是一些简单的概念。因此,实际决策树学习算法是基于启发式算法,如贪婪算法,寻求在每个节点上的局部最优决策。这样的算法不能保证返回全局最优决
策树。这可以减轻训练多棵树的合奏学习者,在那里的功能和样本随机抽样更换。
4:这里有一些概念是很难的理解的,因为决策树本身并不难很轻易的表达它们,比如说异或校验或复用的问题。
5:决策树学习者很可能在某些类占主导地位时创建有有偏异的树,因此建议用平衡的数据训练决策树

Classification  简单示例

>>> from sklearn import tree
>>> X = [[0, 0], [1, 1]]
>>> Y = [0, 1]
>>> clf = tree.DecisionTreeClassifier()
>>> clf = clf.fit(X, Y)
>>> clf.predict([[2., 2.]])
array([1])

>>> from sklearn import tree
>>> X = [[0, 0], [2, 2]]
>>> y = [0.5, 2.5]
>>> clf = tree.DecisionTreeRegressor()
>>> clf = clf.fit(X, y)
>>> clf.predict([[1, 1]])
array([ 0.5])

决策树算法使用 示例

数据集如下图:

程序如下:
  1. <span style="font-size:18px;">#-*- coding: UTF-8 -*-
  2. '''''
  3. Created on 2016/4/23
  4. @author: Administrator
  5. '''
  6. from sklearn.feature_extraction import DictVectorizer
  7. import csv
  8. from sklearn import preprocessing
  9. from sklearn import tree
  10. from sklearn.externals.six import StringIO
  11. #Read in the csv File and put feature in a list of class label
  12. allElectronicsData = open(r"example.csv","rb")
  13. reader = csv.reader(allElectronicsData)
  14. headers = reader.next()
  15. #print headers
  16. featureList = []
  17. labelList = []
  18. #存放在两个元祖中
  19. for row in reader:
  20. labelList.append(row[len(row)-1])
  21. rowDic = {}
  22. for i in range(1,len(row)-1):
  23. rowDic[headers[i]] = row[i]
  24. featureList.append(rowDic)
  25. # print featureList
  26. # print labelList
  27. # Vector Feature
  28. vec = DictVectorizer()
  29. dummyX = vec.fit_transform(featureList) .toarray()
  30. # print "dummyX:",dummyX
  31. # print vec.get_feature_names()
  32. # print "labelList:"+str(labelList)
  33. lb = preprocessing.LabelBinarizer()
  34. dummyY = lb.fit_transform(labelList)
  35. #print "dummyY:" + str(dummyY)
  36. #using desicionTree for classfication
  37. clf = tree.DecisionTreeClassifier(criterion="entropy") #创建一个分类器,entropy决定了用ID3算法
  38. clf = clf.fit(dummyX, dummyY)
  39. print "clf:"+str(clf)
  40. #Visulize model
  41. with open("allEallElectronicInfomationGainori.txt","w") as f:
  42. f = tree.export_graphviz(clf, feature_names=vec.get_feature_names(), out_file = f)
  43. #预测
  44. oneRowX = dummyX[0,:]
  45. #print "oneRowX:" +str(oneRowX)
  46. newRowX = oneRowX
  47. newRowX[0] = 1
  48. newRowX[2] = 0
  49. print "newRowX:" +str(newRowX)
  50. predictedY = clf.predict(newRowX)
  51. print "predictedY:" + str(predictedY)</span>

使用命令导入图形为pdf:dot -T pdf ex.txt -o output.pdf.txt

转载:scikit-learn学习之决策树算法的更多相关文章

  1. 机器学习-scikit learn学习笔记

    scikit-learn官网:http://scikit-learn.org/stable/ 通常情况下,一个学习问题会包含一组学习样本数据,计算机通过对样本数据的学习,尝试对未知数据进行预测. 学习 ...

  2. [转]机器学习——C4.5 决策树算法学习

    1. 算法背景介绍 分类树(决策树)是一种十分常用的分类方法.它是一种监管学习,所谓监管学习说白了很简单,就是给定一堆样本,每个样本都有一组属性和一个类别,这些类别是事先确定的,那么通过学习得到一个分 ...

  3. 决策树算法——ID3

    决策树算法是一种有监督的分类学习算法.利用经验数据建立最优分类树,再用分类树预测未知数据. 例子:利用学生上课与作业状态预测考试成绩. 上述例子包含两个可以观测的属性:上课是否认真,作业是否认真,并以 ...

  4. 【转载】Spark学习 & 机器学习

    然后看的是机器学习这一块,因为偏理论,可以先看完.其他的实践,再看. http://www.cnblogs.com/shishanyuan/p/4747761.html “机器学习是用数据或以往的经验 ...

  5. 决策树算法原理--good blog

    转载于:http://www.cnblogs.com/pinard/p/6050306.html (楼主总结的很好,就拿来主义了,不顾以后还是多像楼主学习) 决策树算法在机器学习中算是很经典的一个算法 ...

  6. Kaggle竞赛入门:决策树算法的Python实现

    本文翻译自kaggle learn,也就是kaggle官方最快入门kaggle竞赛的教程,强调python编程实践和数学思想(而没有涉及数学细节),笔者在不影响算法和程序理解的基础上删除了一些不必要的 ...

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

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

  8. 4-Spark高级数据分析-第四章 用决策树算法预测森林植被

    预测是非常困难的,更别提预测未来. 4.1 回归简介 随着现代机器学习和数据科学的出现,我们依旧把从“某些值”预测“另外某个值”的思想称为回归.回归是预测一个数值型数量,比如大小.收入和温度,而分类则 ...

  9. 就是要你明白机器学习系列--决策树算法之悲观剪枝算法(PEP)

    前言 在机器学习经典算法中,决策树算法的重要性想必大家都是知道的.不管是ID3算法还是比如C4.5算法等等,都面临一个问题,就是通过直接生成的完全决策树对于训练样本来说是“过度拟合”的,说白了是太精确 ...

随机推荐

  1. 13、C#基础整理(枚举)

    枚举 1.概念和作用 (1)用于存放常量,只能在定义时赋值(防止编程过程中恶意篡改,并且防止对同一事物的不同赋值--统一化) (2)定义的枚举类型需要包含该类型的所有可能的值 (3)方法.类.内部都可 ...

  2. yii弹出层

    Yii弹出层,包装了JQuery的JDialog,使用很方便.Yii组件功能太强大,强大到无法自拔 $this->beginWidget('zii.widgets.jui.CJuiDialog' ...

  3. win7 64 下安装ubuntu14.04

    win7下安装ubuntu方法: * 使用win7下的自带的分区工具给ubuntu留出磁盘空间:计算机 -> 右键菜单选择管理 -> 选择磁盘管理->选中最后的那个磁盘->右键 ...

  4. Linux中的likely()和unlikely()

    likely()与unlikely()在2.6内核中,随处可见,那为什么要用它们?它们之间有什么区别呢?首先明确: if (likely(value))等价于if (value) if (unlike ...

  5. git不能提交jar的设置

      项目目录下 文件:.gitignore ,里面设置: *.class # Package Files # *.jar *.war *.ear 删除*.jar

  6. CMOS、BIOS

    CMOS主要的功能为记录主板上面的主要参数,包括系统时间.CPU电压与频率.各项设备的I/O地址与IRQ等,由于这些数据的记录要花费电力,因此主板上面才有电池. BIOS为写入到主板上某一块闪存或EE ...

  7. Java-->IO流模拟实现用户登录以及登录信息

    --> Test 测试类 package com.dragon.java.hwlogin; import java.io.FileNotFoundException; import java.u ...

  8. php中读取文件内容的几种方法

    1.fread string fread ( int $handle , int $length ) fread() 从 handle 指向的文件中读取最多 length 个字节.该函数在读取完最多 ...

  9. 无线路由器wds桥接技术+丢包率

    半根毛线http://www.cnblogs.com/hsd-/ 今天下午鼓捣了一下无线路由的wds桥接 算是计算机网络的作业 码来分享一下 1.首先设置主路由 我的主路由是斐讯4线 路由ip为192 ...

  10. js刷新当前页面

    a href="javascript:window.location.href=location.href"