【发布时间】: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