使用map作为随机森林分类器的输入

时间:2018-05-21 11:57:48

标签: python-3.x scikit-learn random-forest

我在python中使用sklearn模块时遇到问题。我正在尝试使用随机森林分类器使用以下代码对16个不同的类进行分类:

count = 0
for line in lines:
    tokens = line.strip().split(",")
    if count < TRAINING_SIZE:
        X.append(map(float, tokens[0:NUM_PCA]))
        if CLASSIFICATION_TYPE == 2:
            y.append(int(tokens[len(tokens)-1]))
        elif int(tokens[len(tokens)-1]) == 1:
            y.append(0)
        else:
            y.append(1)
        count += 1
    else:
        test_X.append(map(float, tokens[0:NUM_PCA]))
        if CLASSIFICATION_TYPE == 2:
            test_y.append(int(tokens[len(tokens)-1]))
        elif int(tokens[len(tokens)-1]) == 1:
            test_y.append(0)
        else:
            test_y.append(1)

clf = RandomForestClassifier(n_estimators=10, max_depth=None, min_samples_split=1, random_state=0)
clf.fit(X,y)

train_predictions = clf.predict(X)
test_predictions = clf.predict(test_X)

但它返回一个错误,表明:

  

TypeError:float()参数必须是字符串或数字,而不是'map'

如何在此功能中使用地图?

1 个答案:

答案 0 :(得分:0)

如果你改变:

X.append(map(float, tokens[0:NUM_PCA]))

为:

X.append([float(tok) for tok in tokens[0:NUM_PCA]])

问题应该解决。

请注意,您必须对test_X.append(...)

执行相同的操作