Как определить взвешенный параметр дисперсии для задачи множественной выходной регрессии? - PullRequest
1 голос
/ 02 мая 2020

Я использую 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'? Кроме того, как определить вес для каждого выходного столбца? Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...