Я использую RandomForestRegressor для построения своей регрессионной модели, в этой модели ~ 30 столбцов на входе и 5 столбцов на выходе, и я делю тестовый разделитель для измерения производительности модели.
from sklearn.ensemble import RandomForestRegressor
rfreg = RandomForestRegressor()
rfreg.fit(X_train, Y_train)
predict = rfreg.predict(X_test)
rfreg.score(X_test, Y_test)
Тем не менее, появляется ошибка, которая говорит мне, чтобы определить значение metrics.r2_score вручную, в противном случае, он использует'iform_average 'для модели
C:\Users\X\anaconda3\lib\site-packages\sklearn\base.py:420: FutureWarning: The default value of multioutput (not exposed in score method) will change from 'variance_weighted' to 'uniform_average' in 0.23 to keep consistent with 'metrics.r2_score'. To specify the default value manually and avoid the warning, please either call 'metrics.r2_score' directly or make a custom scorer with 'metrics.make_scorer' (the built-in scorer 'r2' uses multioutput='uniform_average').
"multioutput='uniform_average').", FutureWarning)
Я проверил руководство и исходный код для RandomForestRegressor.score функция доступна на сайте sklearn: https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestRegressor.html#sklearn .ensemble.RandomForestRegressor.score
from .metrics import r2_score
from .metrics._regression import _check_reg_targets
y_pred = self.predict(X)
# XXX: Remove the check in 0.23
y_type, _, _, _ = _check_reg_targets(y, y_pred, None)
if y_type == 'continuous-multioutput':
warnings.warn("The default value of multioutput (not exposed in "
"score method) will change from 'variance_weighted' "
"to 'uniform_average' in 0.23 to keep consistent "
"with 'metrics.r2_score'. To specify the default "
"value manually and avoid the warning, please "
"either call 'metrics.r2_score' directly or make a "
"custom scorer with 'metrics.make_scorer' (the "
"built-in scorer 'r2' uses "
"multioutput='uniform_average').", FutureWarning)
return r2_score(y, y_pred, sample_weight=sample_weight,
multioutput='variance_weighted')
Но я все еще не уверен, как определить multioutput='variance_weighted'
в rfreg.score(X_test, Y_test)
в моем случае .
Кроме того, мне интересно, улучшится ли производительность модели, если я изменю значения с multioutput='uniform_weighted'
на multioutput='variance_weighted'
? Кроме того, как определить вес для каждого выходного столбца? Спасибо.