Python sklearn.linear_model: LinearRegression() 在.predict()时发生ValueError

我的训练矩阵X的形状为(5182, 19231),y是一个长度为5182的由1和0组成的列表。我的测试矩阵的形状为(496, 5477)。我将它们存储在不同的pickle文件中。以下是我的代码:

def read(pklFile1):    f=open(pklFile1, 'rb')    Y = cPickle.load(f)    f.close()    return Yif __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个变量来工作呢?如果在预测期间某些变量未知,您可以对它们进行填补(例如,设为零或平均值),但即使这种方法也需要知道变量的确切映射。训练中的哪个变量对应于预测中的哪个变量。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注