#python #machine-learning #scikit-learn #transformer
Вопрос:
Я сделал короткую записную книжку Jupyter, чтобы ответить на мой вопрос о преобразованном регуляторе.
Я хотел поместить трансформатор внутри трубопровода, чтобы поиграть с сеткой параметров, но результаты не совпали.
...
model = linear_model.LinearRegression()
lg_tr = preprocessing.FunctionTransformer(func=np.log, inverse_func=np.exp, check_inverse=True)
y_log = lg_tr.transform(y)
score_0 = model.fit(X, y_log).score(X, y_log)
...
model = compose.TransformedTargetRegressor(func=np.log, inverse_func=np.exp, check_inverse=True,
regressor=linear_model.LinearRegression())
score_1 = model.fit(X, y).score(X, y)
score_0
Значение правильное. Почему тот, из score_1
«не»?
У меня нет проблем с прогнозом, который работает нормально, только оценка.
Я что-то пропустил?
Спасибо =)
Комментарии:
1. Я думаю, что оценка 1-это правильный способ вычисления производительности в диапазоне фактических целевых значений
Ответ №1:
Как правило, вас должно интересовать, насколько хорошо работает ваша модель (или результаты) при прогнозировании фактических значений в их исходном диапазоне или масштабе. Однако это то, с чем вы измеряете, score_1
а не с score_0
чем .
score_0
представляет производительность модели, когда целевая переменная находится в логарифмическом масштабе, что в большинстве случаев не очень полезно.
score_1
однако использует score
метод TransformedTargetRegressor
, который гарантирует, что целевая переменная находится в исходном масштабе, прежде чем вычислять какие-либо показатели производительности. Таким образом, суждения должны приниматься на основе score_1
.
Комментарии:
1. Спасибо, в этом есть смысл. Я был слишком сосредоточен на подгонке данных и забыл их значение… Хорошего дня =)