Почему scikit-learn StandardScaler не поддерживает операцию keep_nan? - PullRequest
0 голосов
/ 04 августа 2020

когда я хочу выполнить проект машинного обучения, я хочу масштабировать свой ввод до (0,1)

Я использую для этого функцию sklearn, такую ​​как StandScaler (), но я обнаружил, когда мои данные содержат nan, fit_transform () потерпит неудачу, как показано ниже:

ValueError: Input contains NaN, infinity or a value too large for dtype('float64').

, но я думаю, что есть какая-то необходимость, хочет сохранить nan и выполнить стандартное масштабирование в других данных, отличных от nan.

почему sklearn не поддерживает это? Есть ли способы его использовать?

1 Ответ

1 голос
/ 04 августа 2020

Скорее всего, вы используете старую (т.е. до 0.20) версию scikit-learn. Эта проблема действительно была решена в версии 0.20; из журнала изменений :

Основная особенность : значения NaN игнорируются и обрабатываются следующими методами предварительной обработки: preprocessing.MaxAbsScaler, preprocessing.MinMaxScaler, preprocessing.RobustScaler, preprocessing.StandardScaler, preprocessing.PowerTransformer, preprocessing.QuantileTransformer classes and preprocessing.maxabs_scale, preprocessing.minmax_scale, preprocessing.robust_scale, preprocessing.scale, preprocessing.power_transform, preprocessing.quantile_transform functions

См. Также закрытую проблему Github # 10404 и соответствующий объединенный запрос на перенос # 11206 .

Итак, просто обновите scikit-learn до последней версии , и все должно быть в порядке, т.е. значения NaN действительно будут игнорироваться во время такой предварительной обработки.

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