在python中创建用于附加其他数组的空动态数组

2024-09-28 21:54:58 发布

您现在位置:Python中文网/ 问答频道 /正文

作为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”。但它并没有说明哪些索引超出了范围。请在正确的轨道上帮助我。在


Tags: ininfoforlen空间rangespace数组