#python-3.x #machine-learning #scikit-learn #data-science #cross-validation
#python-3.x #машинное обучение #scikit-learn #наука о данных #перекрестная проверка
Вопрос:
cross_val_score(estimator=LinearRegression(), X=X, y=y, scoring='neg_mean_squared_log_error', cv=5)
приводит к следующей ошибке:
ValueError: Mean Squared Logarithmic Error cannot be used when targets contain negative values.
хотя мой целевой вектор не имеет отрицательных значений (цены на жилье)
>>> np.any(y < 0)
False
Я знаю, что функция log не определена для отрицательных значений, и эта среднеквадратичная ошибка журнала использует эту формулу:
Это означает, что проблема должна заключаться в шляпе y, т. Е. После подгонки линейная регрессия предсказывает отрицательное значение, но это не так:
>>> np.any(LinearRegression().fit(X,y).predict(X) < 0)
False
Я прочитал ответы на похожие вопросы, но я все еще не уверен, что вызывает эту ошибку и как ее исправить. Эта же ошибка возникает и с другими регуляризованными линейными регрессорами, такими как Ridge, Lasso, ElasticNet при использовании перекрестной проверки. Однако, когда я использую
mean_squared_log_error(y, model.fit(X,y).predict(X))
с этими же моделями, т. Е. Для определения оценки обучения, она отлично работает без ошибок.
Моя цель — отправить прогнозы в Kaggle. Для оценки производительности они используют среднеквадратичную ошибку журнала, но если мои прогнозы иногда отрицательны, как kaggle в любом случае выдает оценку, используя этот показатель?
при использовании перекрестной проверки с другими оценщиками, такими как neg_mean_squared_error
cross_val_score(estimator=LinearRegression(), X=X, y=y, scoring='neg_mean_squared_error', cv=5)
конечно, проблем нет, поэтому могу ли я использовать перекрестные оценки значений с этим показателем для оценки производительности моих моделей, т. Е. Будут ли модели с наименьшим значением neg_mean_squared_error также иметь наименьшее значение neg_mean_squared_log_error?