我的训练矩阵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


我该如何解决?

最佳答案

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

由19231个变量的线性组合组成的线性模型应如何仅对5477个变量起作用?如果在预测过程中不知道某些变量,则可以进行插补(例如设置为零或均值),但是即使这种方法也需要知道变量的确切映射。火车中的哪个变量与预测中的哪个相对应。

关于python - Python sklearn.linear_model:LinearRegression()当.predict()发生ValueError,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37446104/

10-12 19:37