Я тестирую методы машинного обучения, используя сначала набор данных модели, а затем набор тестовых данных (файлы csv).Однако использование df.dropna (inplace = True) оставляет им разные размеры (модель 48470 и тест 48571).Это вызывает множество проблем в моем коде.
Так, например, пока это работает:
linear = linear_model.LinearRegression()
#Model fit to data
linear.fit(xmodel,ymodel.values.ravel())
#Prediction made by model
pred_linear = linear.predict(xtest)
## Compute RMSE
linear_rmse = mean_squared_error(ytest,pred_logit)
print("Linear regression RMSE is ",linear_rmse)
#Linear regression RMSE is 0.07557238168273192
С другой стороны, у меня возникают проблемы с отображением всех результатов:
x1=np.linspace(0,1,48571)
fig, ax = plt.subplots()
ax.plot(x1, yt, 'o', label="Data")
#ax.plot(x1, y_true, 'b-', label="True")
ax.plot(np.hstack((x1, xmodel)), np.hstack((ym, yt)), 'r', label="OLS prediction")
ax.legend(loc="best");
возвращает
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-124-29b0a94ea028> in <module>
24 ax.plot(x1, yt, 'o', label="Data")
25 #ax.plot(x1, y_true, 'b-', label="True")
---> 26 ax.plot(np.hstack((x1, xmodel)), np.hstack((ym, yt)), 'r', label="OLS prediction")
27 ax.legend(loc="best");
C:\ProgramData\Anaconda3\lib\site-packages\numpy\core\shape_base.py in hstack(tup)
284 # As a special case, dimension 0 of 1-dimensional arrays is "horizontal"
285 if arrs and arrs[0].ndim == 1:
--> 286 return _nx.concatenate(arrs, 0)
287 else:
288 return _nx.concatenate(arrs, 1)
ValueError: all the input arrays must have same number of dimensions
Аналогичным образом (я считаю, что это связанная проблема, хотя, если это не мои извинения)
reg_model = sm.OLS(endog=ymodel, exog=xmodel)
reg_test = sm.OLS(endog=ytest, exog=xtest)
reg_model.fit()
reg_test.fit()
pred_regmodel=reg_model.predict(xtest)
pred_regtest=reg_test.predict(xtest) #Transpose sorta solved this, but takes forever #xtest.iloc[9,:].values) technically solved shape problem, but gave false answer
regmodel_rmse = mean_squared_error(ytest,pred_regmodel)
print("OLS RMSE is ",regmodel_rmse)
Возвращает аналогичную несогласованную тусклую ошибку:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-135-3ab9b9511c74> in <module>
3 reg_model.fit()
4 reg_test.fit()
----> 5 pred_regmodel=reg_model.predict(xtest)
6 pred_regtest=reg_test.predict(xtest) #Transpose sorta solved this, but takes forever #xtest.iloc[9,:].values) technically solved shape problem, but gave false answer
7 regmodel_rmse = mean_squared_error(ytest,pred_regmodel)
C:\ProgramData\Anaconda3\lib\site-packages\statsmodels\regression\linear_model.py in predict(self, params, exog)
343 exog = self.exog
344
--> 345 return np.dot(exog, params)
346
347 def get_distribution(self, params, scale, exog=None, dist_class=None):
ValueError: shapes (48470,9) and (48571,9) not aligned: 9 (dim 1) != 48571 (dim 0)
Я хотел бы сформировать мой график, чтобы он выглядел как в [7] из этого примера statsmodels .Что касается второго примера, моя цель состоит в том, чтобы использовать мой метод sm.OLS с данными модели или тестовыми данными, сравнить с ytest df, чтобы я мог найти диапазоны MSRE для сравнения с методами logit / lasso / SVC / etc Iиспользовал.