Python sklearn. Linear_model : LinearRegression() ValueError occured when . 预测()

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

我的训练矩阵 X 的形状为 (5182, 19231),y 是长度为 5182 的 1 和 0 的列表。我的测试矩阵的形状为 (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

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

ValueError: X has 5477 features per sample; expecting 19231

如何修复它?

最佳答案

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

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

关于Python sklearn. Linear_model : LinearRegression() ValueError occured when . 预测(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37446104/

相关文章:

python - 向 Huggingface 变压器添加额外的层

java - 运行 SEMAFOR 语义解析器抛出 IllegalArgumentException

python - Django 模型表单未生成预期的 HTML

python - 将 UUID 添加到我的 Django 应用程序会产生 NoReverseMatch 错误

python - 如何使用 tf.train.Checkpoint 保存大量变量

java - 如何使用java在spark mllib中获取逻辑回归的p值

python - 删除顶行 2 行并将成绩单放在下面

python - 如何将不同长度的列表字典写入 csv?

python - 如何仅从 SFTP 下载过去 14 天内名称中带有时间戳的文件?

python - ValueError : Error when checking input: expected dense_1_input to have shape (24, )但得到形状为(1,)的数组