Scikit learn + Pandas ValueError: 形状 (1,1) 和 (10,10) 不匹配

我在使用SciKit Learn时遇到了问题。

我正在做一个非常简单的线性回归问题。基于学习时间和相应的成绩输入值,我希望能够根据学生的学习时间来估计他们的成绩。

In [1]: import pandas as pdIn [2]: path = 'Desktop/hoursgrades.csv'In [3]: df = pd.read_csv(path)In [4]: X = df['Hours Studied']In [5]:  y = df['Grade']In [6]: training_data_in = list() In [7]: training_data_out = list()In [8]: training_data_in.append(X)In [9]: training_data_out.append(y)  In [11]: from sklearn.linear_model import LinearRegressionIn [12]: model = LinearRegression(n_jobs =-1) In [13]: model.fit(X = training_data_in, y = training_data_out)Out[13]: LinearRegression(copy_X=True, fit_intercept=True, n_jobs=-1, normalize=False)

在这个例子中,数据框看起来是这样的:

In [16]: dfOut[16]:    Hours Studied  Grade0              1   10.01              2   20.02              3   30.03              4   40.04              5   50.05              6   60.06              7   70.07              8   80.08              9   90.09             10  100.0

而X看起来是这样的:

In [17]: XOut[17]: 0     11     22     33     44     55     66     77     88     99    10Name: Hours Studied, dtype: int64

而y看起来是这样的:

In [18]: yOut[18]: 0     10.01     20.02     30.03     40.04     50.05     60.06     70.07     80.08     90.09    100.0Name: Grade, dtype: float64

到目前为止,一切顺利,似乎接受了我输入的所有数据。现在,我想用一些输入数据来测试模型。所以,我想要说,这个学生学习了5个小时,让模型告诉我预期的成绩。

但当我将数据输入模型时,我得到了下面的错误。

有谁可以提供建议吗?

In [14]: studied_hour = [[5]]In [15]: outcome = model.predict(X = studied_hour)---------------------------------------------------------------------------ValueError                                Traceback (most recent call last)<ipython-input-15-6fdab4ae2efd> in <module>()----> 1 outcome = model.predict(X = studied_hour)~/anaconda3/lib/python3.7/site-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)~/anaconda3/lib/python3.7/site-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):~/anaconda3/lib/python3.7/site-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 (10,10) not aligned: 1 (dim 1) != 10 (dim 0)

我应该补充的是:

In [39]: X.shapeOut[39]: (10,)In [40]: y.shapeOut[40]: (10,)

回答:

Xy 的输入形状不正确,根据文档X 应为 (n_samples, n_features)y 应为 (n_samples,)

您看到错误是因为模型认为您有十个特征和十个不同的输出(因此是 (10, 10))。

通过使用以下代码,您可以得到正确的结果:

X = df[['Hours Studied']]  # 注意双括号,形状为 (10, 1)y = df['Grade']model = LinearRegression().fit(X, y)model.predict([[5]])array([50.])

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中创建了一个多类分类项目。该项目可以对…

发表回复

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