通过预测从 sklearn 预测 1 个值

Posted

技术标签:

【中文标题】通过预测从 sklearn 预测 1 个值【英文标题】:predicting 1 value by predict from sklearn 【发布时间】:2020-07-14 23:10:58 【问题描述】:

我正在学习机器学习,在视频课程中,讲师展示了如何通过 sklearn 的预测函数预测 1 个值。他只是用一个浮点参数执行它,它工作正常。但是当我尝试做同样的事情时,我收到一个 ValueError:

>linear_regressor.predict(6.5)

ValueError: Expected 2D array, got scalar array instead:
array=6.5.
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.

我试图重塑它,但我得到了同样的错误:

lvl_of_interest =  np.array([6.5])
np.reshape(lvl_of_interest,(1,-1))
linear_regressor.predict(6.5)

请告诉我,库中的版本可能会有所变化(该课程已有几年历史了)。一个样本如何获得一个特征?

【问题讨论】:

【参考方案1】:

有两个问题:

您重塑了数组,但使用相同的浮点数调用 predict(而不是重塑后的数组,即 linear_regressor.predict(6.5) 而不是 linear_regressor.predict(lvl_of_interest)

此外,应重新分配 np.reshape :

lvl_of_interest =  np.array([6.5])
lvl_of_interest = np.reshape(lvl_of_interest,(1,-1))
linear_regressor.predict(lvl_of_interest)

或在 1 行中:linear_regressor.predict(np.array([6.5]).reshape(1,-1))

(nb : 如果您检查形状,则将 (1,) 数组转换为 (1,1))

【讨论】:

非常感谢!首先是愚蠢的问题。出于某种原因,我认为 reshape 会改变数组本身,并且不会返回结果。 没有愚蠢的问题;) 就地重塑有点棘手,您必须直接修改形状属性:level_of_interest.shape = (1,1) btw,如果它解决了您的问题,您可以将其标记为“已接受的答案”:)【参考方案2】:

LinearRegression().predict() 期望为X 的二维特征数组。

您可以使用.reshape(1, -1) 将数组设为二维,就像错误消息所建议的那样,或者从一开始就将其设为二维:

linear_regressor.predict(np.array([[6.5]]))

【讨论】:

显然甚至不需要np.array()linear_regressor.predict([[6.5]]) 也可以正常工作。 是的,预测将 array_like 作为输入(不仅仅是 np.array)。请参阅***.com/questions/40378427/… 和 sklearn 文档

以上是关于通过预测从 sklearn 预测 1 个值的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 sklearn 从决策树模型中提高预测的准确性?

使用 sklearn 进行 PCA 预测和错误

sklearn:应用相同的缩放来训练和预测管道

sklearn函数怎么看预测值

Sklearn 预测多个输出

如何使用 sklearn python 预测未来的数据帧?