决策树之数据划分
2013-07-01 17:00
169 查看
这篇文章利用了信息熵计算的东西,先写一个数据划分的东西,先写一个简单的逻辑划分:
def splitDataSet(dataSet, axis, value):
retDataSet = []
for featVec in dataSet:
if featVec[axis] == value:
reducedFeatVec = featVec[:axis]
reducedFeatVec.extend(featVec[axis+1:])
retDataSet.append(reducedFeatVec)这是最简单的一个逻辑划分,首先建立一个新的数据集,将划分后的数据添入该数据集,
下面介绍选择最最好的数据集划分方式:
1.建立该列的变化标签
2.计算每种划分的信息熵
对上面步骤进行循环。
下面贴出该步骤的代码:
def chooseBestFeatureToSplit(dataSet):
numberFeatures = len(dataSet[0])-1
baseEntropy = calcShannonEnt(dataSet)
bestInfoGain = 0.0;
bestFeature = -1;
for i in range(numberFeatures):
featList = [example[i] for example in dataSet]
print(featList)
uniqueVals = set(featList)
print(uniqueVals)
newEntropy =0.0
for value in uniqueVals:
subDataSet = splitDataSet(dataSet, i, value)
prob = len(subDataSet)/float(len(dataSet))
newEntropy += prob * calcShannonEnt(subDataSet)
infoGain = baseEntropy - newEntropy
if(infoGain > bestInfoGain):
bestInfoGain = infoGain
bestFeature = i
return bestFeature下面给个运行结果截图:
def splitDataSet(dataSet, axis, value):
retDataSet = []
for featVec in dataSet:
if featVec[axis] == value:
reducedFeatVec = featVec[:axis]
reducedFeatVec.extend(featVec[axis+1:])
retDataSet.append(reducedFeatVec)这是最简单的一个逻辑划分,首先建立一个新的数据集,将划分后的数据添入该数据集,
下面介绍选择最最好的数据集划分方式:
1.建立该列的变化标签
2.计算每种划分的信息熵
对上面步骤进行循环。
下面贴出该步骤的代码:
def chooseBestFeatureToSplit(dataSet):
numberFeatures = len(dataSet[0])-1
baseEntropy = calcShannonEnt(dataSet)
bestInfoGain = 0.0;
bestFeature = -1;
for i in range(numberFeatures):
featList = [example[i] for example in dataSet]
print(featList)
uniqueVals = set(featList)
print(uniqueVals)
newEntropy =0.0
for value in uniqueVals:
subDataSet = splitDataSet(dataSet, i, value)
prob = len(subDataSet)/float(len(dataSet))
newEntropy += prob * calcShannonEnt(subDataSet)
infoGain = baseEntropy - newEntropy
if(infoGain > bestInfoGain):
bestInfoGain = infoGain
bestFeature = i
return bestFeature下面给个运行结果截图:
相关文章推荐
- InputFormat的数据划分、Split调度、数据读取三个问题的浅析
- 熵对分类决策树的划分
- 【大数据部落】NBA体育决策和数据挖掘分析
- 机器学习&数据挖掘笔记_22(PGM练习六:制定决策)
- 怎么在不破坏数据的前提下重新划分分区?
- InputFormat的数据划分、Split调度、数据读取三个问题的浅析
- 在线CRM系统数据成为决策重要依据
- JAVA数据类型的划分
- 141.最小m 段和问题--划分性DP(特殊数据)
- 金融科技&大数据产品推荐:恒丰银行实时智能决策引擎
- 国内首个人工智能大数据决策平台建立!
- 机器学习、大数据、深度学习、数据挖掘、统计、决策和风险分析、概率和模糊逻辑的常见问题解答
- 利用Rownum对数据按GridView 的PageSize进行划分,为分页显示做准备
- Oracle12C--数据类型划分(二十七)
- 数据分析 第四篇:聚类分析(划分)
- 关于InputFormat的数据划分、Split调度、数据读取问题
- 大数据如何帮助移动端企业进行决策
- 数据结构之整数划分问题(转)
- 有关Cassandra的数据划分
- Java虚拟机运行时数据区域划分