Python"标量变量的无效索引"使用RandomForestClassifier

时间:2014-02-07 13:54:27

标签: python machine-learning scikit-learn

我在此行中收到错误“标量变量索引无效”:

  

预测= [[index,x [1]]表示索引,x表示枚举(rf.predict(test),start = 1)]

我知道,有类似问题的解决方案,但我应该在我的代码中输出两个列的解决方案,其中第一个是索引,第二个是预测。所以,我使用枚举方法来计算从1到n的索引,我不知道如何修复我的错误,我不熟悉Python和list comphrehations之类的东西。谢谢你的帮助。

def main():    
    dataset = genfromtxt(open('train.csv', 'r'), delimiter = ',', dtype = 'int64')[1:]
    target = [x[0] for x in dataset]
    train = [x[1:] for x in dataset]
    test = genfromtxt(open('test.csv', 'r'), delimiter = ',', dtype = 'int64')[1:]
    rf = RandomForestClassifier(n_estimators = 1000, n_jobs = CPU)
    rf.fit(train, target)

    predicted = [[index, x[1]] for index, x in enumerate(rf.predict(test), start = 1)]
    savetxt('submission_randomf2.csv', predicted, delimiter=',', fmt='%d,%f', header='ImageId,Label', comments = '')    

if __name__ == "__main__":
    main()   

1 个答案:

答案 0 :(得分:1)

此处rf.predict(test)是一维数组,因为输出维度为1(请参阅documentation)。

尝试以下方法:

predicted = [[index, x] for index, x in enumerate(rf.predict(test), start = 1)]