Python sklearn.linear_model:LinearRegression()当.predict()时出现ValueError

时间:2016-05-25 19:33:34

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

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

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

我该如何解决?

1 个答案:

答案 0 :(得分:0)

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

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