作为ID3算法实现的一部分,我试图在python中计算数据集中某个分割的信息增益。在
原始数据集/空间是二维数组。我想我会创建一个新的3D数组,它将包含原始空间的分区,这样当我完成分区时,我可以计算每个分区的熵。但我是python新手,我不知道如何创建一个空的动态数组(list?)我可以附加其他二维数组。在
下面是我现在所拥有的,我尝试过很多种声明分区[]的方法,并将其附加到其中,包括改用numpy数组,但我无法确定正确的语法,或者甚至无法确定它是否可行:
def InformationGain(space, splitIndex, numPossibleValues=2):
info = 0
partitions = []
for i in range (0, numPossibleValues-1):
partitions.append([])
#split into partitions
for i in range (0,len(space)):
partitions[space[i][splitIndex]].append(space[i])
#get entropy for each partition
for i in range (0, numPossibleValues-1):
info += Entropy(partitions[i])*len(partitions[i])/len(space)
return (Entropy(space) - info)
a =[[1,0,0,1],
[1,0,0,1],
[0,0,0,1],
[0,0,0,1],
[0,0,0,1],
[0,0,0,1],
[0,0,0,1],
[0,0,0,1],]
print(InformationGain(a,1))
在那个版本中,我在append()的行中得到一个“IndexError:list index out-out-range”。但它并没有说明哪些索引超出了范围。请在正确的轨道上帮助我。在
目前没有回答
相关问题 更多 >
编程相关推荐