网络上使用sklearn生成决策树的资料很多,这里主要说明遇见标量数据的处理。

经查验参考资料,sklearn并非使用了课上以及书上讲的ID3算法,而是选择了CART,该算法生成二叉树;scikit-learn使用了一种优化的CART算法,要求元数据为数值型(要能转换为np.float32类型的矩阵),因为该实现同时可以做回归分析。然而,题目数据中有天气等标量数据,所以还要进行转化,这里采用了sklearn中的LabelEncoder来将n个标量转化为1至n-1的整数。将数据训练完毕后,安装并使用了Graphviz(一个图形显示库)和pydotplus(方便使用Graphviz的Python编程接口)来进行结果图形化显示;查阅资料说的配置好像比较复杂,其实下载下来Graphviz后解压缩,并把bin文件夹加入环境变量就可以用pydotplus来访问了。使用信息熵作为度量,结果如图所示,其中value表示目标两类各包含多少实例。

结果:

为展示训练结果如何,将原数据再次使用score函数输入,发现正确率100%。应该是由于没有限制树的深度结果比较精确,并且发现“湿度”这个属性根本没有使用!但是一旦数据比较多,就需要限制树的深度了和每个叶子的实例个数了,由max_depth、min_samples_split、min_samples_leaf来设置。

最后还有一些疑问,就是把标量当做数值属性来处理,会影响最后分类的结果吗?需要拿数据说话还是有一些已经存在的结论。。。?

aaarticlea/png;base64,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" alt="" />

 # -*- coding: utf-8 -*-
"""
Created on Tue Nov 22 17:45:37 2016 @author: Ascii0x03
""" from sklearn import tree
from sklearn import preprocessing
import pydotplus
from IPython.display import Image #将数据集data中的字符串属性全部转化为对应的标签
#data为矩阵,同tree.DecisionTreeClassifier.fit方法中的数据
#返回值le_list是preprocessing.LabelEncoder()对象的列表
#str_index是属性中字符串类型的下标
def preprocess(data):
str_index = []
#temp_label = []
le_list = []
le_num = 0
for i in range(0,len(data[1])):
if (isinstance(data[1][i], str)):
str_index.append(i)
#整理出labelEncoder
for index in str_index:
temp_label = []
for i in data:
temp_label.append(i[index])
le_list.append(preprocessing.LabelEncoder())
le_list[le_num].fit(temp_label)
#根据labelEncoder修改原始数据
#print temp_label
for i in data:
i[index] = le_list[le_num].transform([(i[index])])[0] le_num += 1 return (le_list, str_index) clf = tree.DecisionTreeClassifier(criterion = "entropy")
#每行是一个数据,分别为天气,温度,湿度风况
data = [["Sunny", 85, 85, "No"],
["Sunny", 80, 90, "Yes"],
["Cloudy", 83, 78, "No"],
["Rainy", 70, 96, "No"],
["Rainy", 68, 80, "No"],
["Rainy", 65, 70, "Yes"],
["Cloudy", 64, 65, "Yes"],
["Sunny", 72, 95, "No"],
["Sunny", 69, 70, "No"],
["Rainy", 75, 80, "No"],
["Sunny", 75, 70, "Yes"],
["Cloudy", 72, 90, "Yes"],
["Cloudy", 81, 75, "No"],
["Rainy", 71, 80, "Yes"]
]
#针对每行数据,分类为适合运动与不适合运动
labels = ["unfit", "unfit", "fit", "fit", "fit",
"unfit", "fit", "unfit", "fit", "fit",
"fit", "fit", "fit","unfit"]
(le_list, str_index) = preprocess(data)
#print data
clf.fit(data, labels) print clf.feature_importances_
dot_data = tree.export_graphviz(clf, out_file=None)
graph = pydotplus.graph_from_dot_data(dot_data)
Image(graph.create_png()) #这里貌似不能正确显示
graph.write_pdf("test1.pdf")
graph.write_png("test1.png")
#print dot_data test = [["Rainy", 71, 80, "Yes"]]
#Preprocessing the test data
for index in range(0, len(str_index)):
for i in test:
i[str_index[index]] = le_list[index].transform([i[str_index[index]]])[0]
#print test
print clf.predict(test)
print clf.predict_proba(test)
print clf.score(data, labels)

参考:

0. ID3算法实现决策树可http://blog.csdn.net/u012822866/article/details/42419471

1. http://scikit-learn.org/stable/modules/tree.html#tree-classification

2. http://scikit-learn.org/dev/modules/generated/sklearn.preprocessing.LabelEncoder.html

3. http://pydotplus.readthedocs.io/

4. http://www.graphviz.org/

使用sklearn构建含有标量属性的决策树的更多相关文章

  1. view视图文件中的input等输入框必须含有name属性,不然控制器里的动作formCollection是没有值的

    view视图文件中的input等输入框必须含有name属性,不然控制器里的动作formCollection是没有值的,就是没有name属性,后台获取不到值

  2. jquery 检测某元素是否含有某属性

    检测某元素是否含有某属性 if(typeof($("#aid").attr("rel"))=="undefined")

  3. JSON 转含有泛型属性的对象

    在将 json 字符串转为对象时,如果对象含有泛型,在进行转换时需要指明泛型类型. 1. 对象只含有一个泛型属性时 1.1  代码 /** * @Describe: * @Author: chenfa ...

  4. 【导包】使用Sklearn构建Logistic回归分类器

    官方英文文档地址:http://scikit-learn.org/dev/modules/generated/sklearn.linear_model.LogisticRegression.html# ...

  5. 机器学习Sklearn系列:(三)决策树

    决策树 熵的定义 如果一个随机变量X的可能取值为X={x1,x2,..,xk},其概率分布为P(X=x)=pi(i=1,2,...,n),则随机变量X的熵定义为\(H(x) = -\sum{p(x)l ...

  6. 含有Date属性的对象转化为Json

    含有Date类型属性的对象,转化为Json,Date属性并不是时间戳格式. 解决方法: 使用Jackson的注解@JsonFormat,添加到对象属性上方即可. 我们的北京时间会相差8个小时,因为我们 ...

  7. JavaScript判断对象是否含有某个属性

    两种方式,但稍有区别 1,in 运算符 1 2 3 var obj = {name:'jack'}; alert('name' in obj); // --> true alert('toStr ...

  8. 判断表单中是否含有disabled属性

    我想判断input里面是否有disabled.或者选中未选中的selected  checked 属性时,需要用  prop()  方法,返回的结果是 true 或 false . attr()这个方 ...

  9. 使用Sklearn构建朴素贝叶斯分类器-新闻分类

    # -*- coding: UTF-8 -*- import jieba import os import random from sklearn.naive_bayes import Multino ...

随机推荐

  1. PathRemoveFileSpec 函数的作用:将路径末尾的文件名和反斜杠去掉(与GetModuleFileName配合)

    PathRemoveFileSpec 函数的作用:将路径末尾的文件名和反斜杠去掉. 例如,我们想获取EXE文件自身所在的文件夹,可以这样: #include <stdio.h> #incl ...

  2. [Django] The admin interface

    Now let's see how to access admin interface. 1. Create a super user which can access admin interface ...

  3. [NPM] Run npm scripts in series

    After creating several npm script it becomes useful to run multiple scripts back-to-back in series. ...

  4. 【33.33%】【codeforces 608C】Chain Reaction

    time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...

  5. nginx 和 tomcat 生产环境配置 建议和方法

    参考  以下内容: http://blog.csdn.net/lifetragedy/article/details/7708724 一. nginx参数调优 worker_processes 3; ...

  6. SharePoint 2010/2013 隐藏的速度下拉菜单列表项

    SharePoint 2010/2013 隐藏的速度下拉菜单列表项         有时为了防止一些用户编辑列表项.需要隐藏下拉菜单列表项.,仅仅须要添加一个内容编辑器控件,将css代码写入其HTML ...

  7. Cordova 集成极光推送

    1.申请极光推送账号,创建应用,配置包等信息,可以获得AppKey,用于添加Cordova插件,这部分暂不细讲,根据官网的提示操作就能完成. 2.命令窗口给cordova项目添加极光推送插件 cord ...

  8. smarty循环

    1. 功能说明,在页面使用smarty循环100次输出,类似for循环100次{section name=total loop=100}{$smarty.section.total.index+1} ...

  9. Netty:一种非易失堵塞client/server相框

    Netty:一种非易失堵塞client/server相框 作者:chszs.转载需注明.博客主页:http://blog.csdn.net/chszs Netty是一个异步事件驱动的网络应用框架,为J ...

  10. 深入Qt 学习 -- 反射机制(比较简单清楚)

    相对于Java天生的这一特性, C++并不具备;但进入到Qt领域,这一切都变得简单自如了. 从Qt的元对象系统可知,除了提供信号/槽机制的特性之外,它还提供了以下特性: ■ QObject::meta ...