【问题标题】:ValueError : Random forest classification by scikit learnValueError:scikit learn 的随机森林分类
【发布时间】:2015-02-21 18:33:15
【问题描述】:

我正在使用随机森林解决分类问题。我通过 BOW 将句子转换为 num。我在里面放了一个标签,然后建了一棵树。

data_train = [[1.0, 1.0], [2.0, 2.0]]

label_train = [1,2]

estimator = RandomForestClassifier()

estimator.fit_transform(data_train, label_train)

我准备了一个test_data,它是一个尝试预测的句子。但它没有用。

test_data = [[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]

label_predict = estimator.predict_proba(test_data)


ValueError: Number of features of the model must match the input. Model n_features is 2 and input n_features is 12 

我知道它说元素的数量不匹配。但是句子中的单词数量不同,我想肯定是不同的。我该如何解决这个问题?

【问题讨论】:

    标签: python machine-learning scikit-learn


    【解决方案1】:

    在您的示例中,您的火车数据有两个特征/维度/列(行数与此问题无关):

    [[1.0, 1.0], 
     [2.0, 2.0]]
    

    并且您为每个行/样本都有一个标签。

    [1,
     2]
    

    您的测试数据必须看起来相似,即它必须具有相同数量的特征/维度/列。例如这样就可以了:

    [[1.0, 1.0],
     [1.0, 1.0], 
     [1.0, 1.0],
     [1.0, 1.0], 
     [1.0, 1.0],
     [1.0, 1.0]]
    

    您可以有不同的行数,但列数必须相同。在这种情况下,您有 2 列和 6 行,因此您将获得 6 个标签作为predict_proba 的结果。

    【讨论】:

    • 谢谢。所以,我必须在不改变数据含义的情况下将 test_data 设为两列。(或更改 train_data)
    • 是的,很可能每一列都代表您的训练数据和测试数据中的某些东西(相同)。
    猜你喜欢
    • 2015-03-28
    • 2017-08-25
    • 2019-09-05
    • 2013-09-22
    • 2018-02-18
    • 2017-05-22
    • 2013-04-26
    • 2018-05-20
    • 2016-05-25
    相关资源
    最近更新 更多