大数据-决策树
Posted 可豆豆
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据-决策树相关的知识,希望对你有一定的参考价值。
决策树/判定树:是一个类似于流程图的树结构,其中,每个内部结点表示在一个属性上的测试,每个分支代表一个属性输出,而每个树叶结点代表类或类分布。树的最顶层是根结点。
熵(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)
以上是关于大数据-决策树的主要内容,如果未能解决你的问题,请参考以下文章