【问题标题】:Python "invalid index to scalar variable" using RandomForestClassifier使用 RandomForestClassifier 的 Python“标量变量的无效索引”
【发布时间】:2014-02-07 22:13:23
【问题描述】:

我在这一行得到一个错误“标量变量的索引无效”:

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

我知道,有类似问题的解决方案,但我应该在我的代码中输出包含两列的解决方案,其中第一列是索引,第二列 - 预测。所以,我使用 enumerate 方法来计算从 1 到 n 的索引,但我不知道如何修复我的错误,因为我是 Python 新手和列表 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()   

【问题讨论】:

  • rf.predict(test) 返回什么?据推测,至少有一个返回的项目是标量,因此尝试将其索引为 x[1] 失败。

标签: python machine-learning scikit-learn


【解决方案1】:

这里rf.predict(test) 是一个一维数组,因为输出维度为一(请参阅documentation)。

尝试以下方法:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-17
    • 2020-06-20
    • 1970-01-01
    • 2020-05-09
    • 1970-01-01
    • 2013-10-13
    相关资源
    最近更新 更多