我在数据框上使用多项式回归。这是代码
from sklearn.preprocessing import PolynomialFeaturesfrom sklearn import metricsfrom sklearn.metrics import mean_squared_errorfrom math import sqrtfrom sklearn.linear_model import LinearRegressionpoly_reg = PolynomialFeatures(3)lin_reg_2 = LinearRegression()iv_poly = poly_reg.fit_transform(X_train)poly_reg.fit(iv_poly, y_train)lin_reg_2.fit(iv_poly, y_train)predictValues = lin_reg_2.predict(X_test)print("RMSE is:-") print(np.sqrt(metrics.mean_squared_error(y_test, predictValues)))
错误:
ValueError Traceback (most recent call last)<ipython-input-4-a77f27b571a6> in <module>() 106 107 --> 108 predictValues = lin_reg_2.predict(X_test) 109 print("RMSE is:-") 110 print(np.sqrt(metrics.mean_squared_error(y_test, predictValues)))~\Anaconda3\lib\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\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\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 (18,17) and (1140,1) not aligned: 17 (dim 1) != 1140 (dim 0)
我使用了线性回归,没有出现任何错误,并且成功计算了RMSE,但是应用多项式回归时,它出现了错误
回答:
你没有转换 X_test
iv_poly_test = poly_reg.transform(X_test)lin_reg_2.predict(iv_poly_test)