【发布时间】:2018-10-09 23:22:00
【问题描述】:
如下实现线性回归:
from sklearn.linear_model import LinearRegression
x = [1,2,3,4,5,6,7]
y = [1,2,1,3,2.5,2,5]
# Create linear regression object
regr = LinearRegression()
# Train the model using the training sets
regr.fit([x], [y])
# print(x)
regr.predict([[1, 2000, 3, 4, 5, 26, 7]])
产生:
array([[1. , 2. , 1. , 3. , 2.5, 2. , 5. ]])
在使用预测功能时,为什么不能使用单个 x 值来进行预测?
正在尝试regr.predict([[2000]])
返回:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-3-3a8b477f5103> in <module>()
11
12 # print(x)
---> 13 regr.predict([[2000]])
/usr/local/lib/python3.6/dist-packages/sklearn/linear_model/base.py in predict(self, X)
254 Returns predicted values.
255 """
--> 256 return self._decision_function(X)
257
258 _preprocess_data = staticmethod(_preprocess_data)
/usr/local/lib/python3.6/dist-packages/sklearn/linear_model/base.py in _decision_function(self, X)
239 X = check_array(X, accept_sparse=['csr', 'csc', 'coo'])
240 return safe_sparse_dot(X, self.coef_.T,
--> 241 dense_output=True) + self.intercept_
242
243 def predict(self, X):
/usr/local/lib/python3.6/dist-packages/sklearn/utils/extmath.py in safe_sparse_dot(a, b, dense_output)
138 return ret
139 else:
--> 140 return np.dot(a, b)
141
142
ValueError: shapes (1,1) and (7,7) not aligned: 1 (dim 1) != 7 (dim 0)
【问题讨论】:
-
所以看起来该函数进行了 7D 预测!。所以模型认为你输入一个 7D 的样本 X 并产生一个 y 和 7D 的输出。因此,您的新输入不适合。也许你应该把你拉进去并输出到 (7,1) 暗向量。
-
添加到@Quickbeam2k1 的评论。使用reshape。例如,
X = np.reshape(x, (7,1))然后适合您的模型,它应该可以按预期工作。 -
@Quickbeam2k1 它的 2D(不是 7D)。只是第二个维度有 7 个元素。
-
所以你传递的每个向量都是 7D。您下面的答案也使用 7d 向量表示 x 和 y
-
@Quickbeam2k1 7 个元素并不意味着 7d。
标签: python scikit-learn regression linear-regression