尝试使用 model.predict() 预测值导致的线性回归错误 [重复]

Posted

技术标签:

【中文标题】尝试使用 model.predict() 预测值导致的线性回归错误 [重复]【英文标题】:Linear regression errors from trying to predict a value using model.predict() [duplicate] 【发布时间】:2020-10-06 00:01:09 【问题描述】:

我正在尝试制作一个线性回归算法,该算法可以根据其价值预测团队将获得的点数,我已经加载了 .csv 文件,并且这样做没有遇到任何问题。然而,当我试图弥补我自己的价值并试图估计我输入的价值时,它给了我这个错误:

Traceback (most recent call last):
  File "", line 28, in <module>
    print(model.predict(enquiry))
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/sklearn/linear_model/_base.py", line 236, in predict
    return self._decision_function(X)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/sklearn/linear_model/_base.py", line 218, in _decision_function
    X = check_array(X, accept_sparse=['csr', 'csc', 'coo'])
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/sklearn/utils/validation.py", line 73, in inner_f
    return f(**kwargs)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/sklearn/utils/validation.py", line 617, in check_array
    "if it contains a single sample.".format(array))
ValueError: Expected 2D array, got scalar array instead:
array=566.0.
Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample.

这是我的代码:

import matplotlib.pyplot as plt
import pandas as pd
from sklearn.linear_model import LinearRegression

df = pd.read_csv("premstats.csv")
print(df.describe())
print(df.columns)
y = df.Points
X = df.Value
X = X.values.reshape(-1, 1)
y = y.values.reshape(-1, 1)

# Can we do linear regression on this?

model = LinearRegression()
model.fit(X,y)
predictions = model.predict(X)
plt.scatter(X, y, alpha=0.4)
# Plot line here:
plt.plot(X,predictions, "-")
plt.title("Premier League")
plt.xlabel("Team Values from seaons 2013/14 to 2018/19")
plt.ylabel("Points collected")
plt.show()

while True:
    enquiry = float(input("Enter the value of a team, and I'll predict the number of points they'll collect!"))
    print(model.predict(enquiry))

【问题讨论】:

【参考方案1】:

模型是在向量上训练的(即使这些向量的长度为 1),所以model.predict() 接受一个序列(列表、数组等),而不是浮点数。该错误会告诉您确切的问题以及如何解决它。

【讨论】:

以上是关于尝试使用 model.predict() 预测值导致的线性回归错误 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

keras 中 model.predict() 和 model.predict_generator() 之间的预测差异

Keras model.predict() 为测试输入中的所有值返回相同的预测输出

如何在 Keras 中解释 model.predict() 的输出

pmml4s model.predict() 返回数组而不是单个值

model.apply(x) 结果的 xgboost 总和不等于 model.predict(x)

tf.keras model.predict 导致内存泄漏