#python #machine-learning #scikit-learn #google-cloud-functions
# #python #машинное обучение #scikit-learn #google-облачные функции
Вопрос:
Я пытаюсь получить «одинаковые» показатели, используя RFECV и метод cross_val_score. 2-й метод используется потому, что для меня действительно важно получить показатели с их стандартным отклонением (неопределенности — это круто).
Это и есть регрессионная модель:
regression = Lasso(alpha=0.1,
selection="random",
max_iter=10000,
random_state=42)
Метод RFECV:
min_number_features = df.shape[0]//10
rfecv = RFECV(estimator=regression,
step=1,
min_features_to_select=min_number_features,
cv=KFold(n_splits=10,
shuffle=True,
random_state=42),
scoring='neg_mean_squared_error')
rfecv.fit(X_train, target_train)
score = rfecv.score(X_train, target_train)
В aveage это дает rmse 0,84. Метод cross_val_score выглядит следующим образом:
metrics_cross_val_score=[
"neg_root_mean_squared_error",
"neg_mean_squared_error",
"r2",
"explained_variance",
"neg_mean_absolute_error",
"max_error",
"neg_median_absolute_error"
]
for m in metrics_cross_val_score:
score=cross_val_score(regression,
X_train,
target_train,
cv=KFold(n_splits=10,
shuffle=True,
random_state=42),
scoring=m)
score= [-score.mean()/mean,score.std()/mean]
metrics[m]=round(score[0],2)
dev="std_" m
metrics[dev]=round(score[1],2)
Для 2-го метода я нормализую каждую метрику по среднему значению (в попытке получить оценку от 0 до 1): результаты, как правило, не совсем такие, как в 1-м методе (хотя RFECV RMSE находится в пределах интервала cross_val_score RMSE — стандартное отклонение, который довольно большой и нехороший).
Итак, здесь возникают вопросы:
- Я прочитал много способов нормализации RMSE (в среднем, по y_max-y_min, по квантилям… И я пока не знаю наилучшего подхода к моим данным. У кого-нибудь есть яркая рекомендация по этому поводу?
- RFECV работает с выбранными функциями, а cross_val_score — со всеми функциями. Если cross_val_score работает с теми же столбцами, что и RFECV выбирает, благополучие cross_val_score RMSE резко снижается, и это меня действительно озадачивает.
Вот сравнение между RFECV RMSE (alg_score) и метриками cross_val_score со стандартным отклонением (все остальное).
Надеюсь, я выразился правильно. Если вам интересно, вот панель мониторинга со всем, что связано с этим: https://datastudio.google.com/s/gUKsAyZfI5I