【问题标题】:Python sklearn.linear_model: LinearRegression() ValueError occured when .predict()Python sklearn.linear_model:LinearRegression() ValueError 在 .predict() 时发生
【发布时间】:2016-09-23 14:05:38
【问题描述】:

我的训练矩阵 X 的形状为 (5182, 19231),y 是长度为 5182 的 1 和 0 的列表。我的测试矩阵的形状为 (496, 5477)。我将它们存储在单独的泡菜文件中。这是我的代码:

def read(pklFile1):
    f=open(pklFile1, 'rb')
    Y = cPickle.load(f)
    f.close()
    return Y
if __name__ == '__main__':
    X=read("results/train_feature.pkl")
    y=read("results/train_label.pkl")
    test=read("results/test_feature.pkl")
    target=read("test_label.pkl")
    clf=LogisticRegression()
    clf=clf.fit(X, y)
    predicted= clf.predict(test)
    accuracy=np.mean(predicted == target)
    print accuracy

当我运行我的代码时,运行时出现以下消息
predicted = clf.predict(test):

ValueError: X has 5477 features per sample; expecting 19231

我该如何解决?

【问题讨论】:

  • 训练和预测阶段的特征数量不匹配,您不能要求模型预测的特征数量少于或多于训练阶段使用的特征数量。

标签: python machine-learning nlp scikit-learn linear-regression


【解决方案1】:

您在 19231 个特征上训练了一个线性模型,但想要预测一些只有 5477 个特征的新样本。 线性模型(或大多数分类器)不是这样工作的。特征数量必须相同!

您的线性模型(由 19231 个变量的线性组合组成)应该如何仅适用于 5477 个变量?如果在预测过程中某些变量是未知的,您可以估算它们(例如设置为零或均值),但即使这种方法也需要知道变量的确切映射。 train 中的哪个变量对应于 predict 中的哪个变量。

【讨论】:

    猜你喜欢
    • 2014-03-22
    • 2017-07-09
    • 1970-01-01
    • 2018-07-19
    • 1970-01-01
    • 2020-03-03
    • 2018-12-23
    • 2023-01-28
    • 1970-01-01
    相关资源
    最近更新 更多