Так в чем же может быть проблема? Эта модель не подходит или данные слишком зашумлены?
Код: Выделить всё
from sklearn.model_selection import GridSearchCV
from sklearn.metrics import mean_absolute_error
from sklearn.metrics import mean_squared_error, r2_score
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LinearRegression
from sklearn.ensemble import RandomForestRegressor
from sklearn.neural_network import MLPRegressor
from sklearn.decomposition import KernelPCA
param_grid = {
'n_estimators': [i for i in range(50, 500, 50)],
'max_depth': [i for i in range(5, 20, 5)],
}
estimator = RandomForestRegressor()
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.1, random_state=52)
X_train,scalerX = normalize(X_train)
Y_train,scalerY = normalize(Y_train)
X_test = scalerX.transform(X_test)
Y_test = scalerY.transform(Y_test)
gridModel = GridSearchCV(estimator=estimator,param_grid=param_grid,n_jobs=4,cv=5,scoring='neg_mean_squared_error')
gridModel.fit(X_train,Y_train)
print(gridModel.best_params_)
при изменении сетки на [i для i в диапазоне (5, 50, 5)], затем best_params: {'max_length': 30, 'n_estimators': 50
Код: Выделить всё
y_pred_test = gridModel.predict(X_test)
test_r2_score = r2_score(y_pred=y_pred_test,y_true=Y_test)
y_pred_train = gridModel.predict(X_train)
train_r2_score = r2_score(y_pred=y_pred_train,y_true=Y_train)
print("Result Test:",test_r2_score)
print("Result Train:",train_r2_score)
{'max_length': 15, 'n_estimators': 150
Результат теста: -2,952394644421328e+31
Последовательность результатов: 0,8043381537451035
{' max_глубина': 30, 'n_estimators': 50.Результат теста: -7.37835882483847e+30
Последовательность результатов: 0,9286384515560636
Подробнее здесь: https://stackoverflow.com/questions/784 ... ata-to-bad