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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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