码迷,mamicode.com
首页 > 其他好文 > 详细

大数据-决策树

时间:2017-10-18 00:28:58      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:信息   pre   criterion   了解   多少   usr   流程   blog   ros   

决策树/判定树:是一个类似于流程图的树结构,其中,每个内部结点表示在一个属性上的测试,每个分支代表一个属性输出,而每个树叶结点代表类或类分布。树的最顶层是根结点。

熵(entropy)概念:信息量的度量就等于不确定性的多少。一条信息的信息量大小和它的不确定性有直接的关系,要搞清楚一件非常不确定的事情,需要了解大量的信息。

变量的不确定性越大,熵也就越大。

决策树归纳算法 (ID3)

 

          1970-1980, J.Ross. Quinlan, ID3算法

     

          选择属性判断结点

 

          信息获取量(Information Gain):Gain(A) = Info(D) - Infor_A(D)

 

      技术分享

          其中pi表示第i个类别在整个训练元组中出现的概率,可以用属于此类别元素的数量除以训练元组元素总数量作为估计。熵的实际意义表示是D中元组的类标号所需要的平均信息量。

在信息增益中,衡量标准是看特征能够为分类系统带来多少信息,带来的信息越多,该特征越重要。对一个特征而言,系统有它和没它时信息量将发生变化,而前后信息量的差值就是这个特征给系统带来的信息量。所谓信息量,其实就是熵。

其他算法:

               C4.5:  Quinlan

               Classification and Regression Trees (CART): (L. Breiman, J. Friedman, R. Olshen, C. Stone)

               共同点:都是贪心算法,自上而下(Top-down approach)

               区别:属性选择度量方法不同: C4.5 (gain ratio), CART(gini index), ID3 (Information Gain)

决策树的优点:

     直观,便于理解,小规模数据集有效     

 

决策树的缺点:

     处理连续变量不好

     类别较多时,错误增加的比较快

     可规模性一般

 决策树应用:

data.xls是需要训练的数据集,dataTest.xls是测试集

#!/usr/bin/python
# -*- coding: utf-8 -*-

import pandas as pd
from sklearn.tree import DecisionTreeClassifier as DTC

data_train = pd.read_excel(decisionTree/data.xls, index_col=u序号)#指定以"序号"为索引
data_test = pd.read_excel(decisionTree/dataTest.xls, index_col=u序号)

‘‘‘
data_train[‘天气‘] = data_train[‘天气‘].map({‘好‘:‘1‘, ‘坏‘:‘0‘})
data_train[‘是否周末‘] = data_train[‘是否周末‘].map({‘是‘:‘1‘, ‘否‘:‘0‘})
data_train[‘是否有促销‘] = data_train[‘是否有促销‘].map({‘是‘:‘1‘, ‘否‘:‘0‘})
data_train[‘销量‘] = data_train[‘销量‘].map({‘高‘:‘1‘, ‘低‘:‘0‘})
‘‘‘
#数据是类别标签,要将它转换为数据
#用1来表示“好”、“是”、“高”这三个属性,用0来表示“坏”、“否”、“低”
data_train[data_train == u] = 1
data_train[data_train == u] = 1
data_train[data_train == u] = 1
data_train[data_train != 1] = 0

data_test[data_test == u] = 1
data_test[data_test == u] = 1
data_test[data_test != 1] = 0

x = data_train.iloc[:,:3].as_matrix().astype(int)
y = data_train.iloc[:,3].as_matrix().astype(int)
print(真实结果:%s%y)
data_test = data_test.iloc[:,:3].as_matrix().astype(int)

dtc = DTC(criterion=entropy)
dtc.fit(x, y)

y_pred = dtc.predict(data_test)

print(预测结果:%s%y_pred)

 

大数据-决策树

标签:信息   pre   criterion   了解   多少   usr   流程   blog   ros   

原文地址:http://www.cnblogs.com/fredkeke/p/7684396.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!