Я использую несколько моделей для прогнозирования проблемы регрессии. Мне нужно использовать модель, которая даст наименьшую ошибку%. Я рассчитал mape для каждой модели, но мне нужно написать код, в котором он автоматически даст мне прогноз для модели с самым низким mape. Может ли кто-нибудь помочь мне в этом? Часть моего кода здесь. Заранее спасибо.
print('\n\n---------Training Decision tree Model----------------')
dtree = AdaBoostRegressor(tree.DecisionTreeRegressor(random_state=1))
model_dt = dtree.fit(X_train_scaled, y_train)
pred_dt = dtree.predict(X_test_scaled)
mape_dt = np.mean((abs(pred_dt - y_test)/y_test)*100)
print('\nMean Absolute Percentage Error = {:.3f}'.format(mape_dt),'% ' )
print('R-squared score (training): {:.3f}'
.format(dtree.score(X_train_scaled,y_train)))
print('R-squared score (test): {:.3f}'
.format(dtree.score(X_test_scaled, y_test)))
result['dtree-pred']=pred_dt
result['error%_dtree']=mape_dt
#KNN
print('\n\n---------Training K-nearest neighbour Model----------------')
knn = AdaBoostRegressor(KNeighborsRegressor(n_neighbors = 5),random_state=1)
model_knn=knn.fit(X_train_scaled, y_train)
pred_knn = knn.predict(X_test_scaled)
mape_knn = np.mean((abs(pred_knn - y_test)/y_test)*100)
print('\nMean Absolute Percentage Error = {:.3f}'.format(mape_knn),'% ' )
print('R-squared score (training): {:.3f}'
.format(knn.score(X_train_scaled,y_train)))
print('R-squared score (test): {:.3f}'
.format(knn.score(X_test_scaled, y_test)))
result['knn-pred']=pred_knn
result['error%_knn']=mape_knn
#MLR
print('--------Training Linear Regression Model---------------')
lreg = AdaBoostRegressor(LinearRegression(),random_state=1)
model_lreg= lreg.fit(X_train_scaled,y_train)
pred_lreg = lreg.predict(X_test_scaled)
mape_lreg = np.mean((abs(pred_lreg - y_test)/y_test)*100)
print('\nMean Absolute Percentage Error = {:.3f}'.format(mape_lreg),'% ' )
print('R-squared score (training): {:.3f}'
.format(lreg.score(X_train_scaled,y_train)))
print('R-squared score (test): {:.3f}'
.format(lreg.score(X_test_scaled, y_test)))
result['mlr-pred']=pred_lreg
#Ridge
print('\n\n---------Training Ridge Regression Model----------------')
ridge = AdaBoostRegressor(Ridge(alpha=0),random_state=1)
model_ridge=ridge.fit(X_train_scaled,y_train)
pred_ridge = ridge.predict(X_test_scaled)
mape_ridge = np.mean((abs(pred_ridge - y_test)/y_test)*100)
print('\nMean Absolute Percentage Error = {:.3f}'.format(mape_ridge),'% ' )
print('R-squared score (training): {:.3f}'
.format(ridge.score(X_train_scaled,y_train)))
print('R-squared score (test): {:.3f}'
.format(ridge.score(X_test_scaled, y_test)))
result['ridge-pred']=pred_ridge
result['error%_ridge']=mape_ridge