Обработка отсутствующих значений: SimpleImputer (простой для понимания + очень подробный)

искусственный интеллект

Мало знаний, большой вызов! Эта статья участвует в "Необходимые знания для программистов«Творческая деятельность

Подробное объяснение параметров SimpleImputer

class sklearn.impute.SimpleImputer(*, missing_values=nan, strategy='mean', fill_value=None, verbose=0, copy=True, add_indicator=False)

Значение параметра

  • missing_values:int, float, str, (дефолт)np.nanилиNone, то есть каковы пропущенные значения.
  • strategy: Стратегия заполнения нулевого значения, всего четыре варианта (по умолчанию)mean,median,most_frequent,constant.meanУказывает, что пропущенные значения для этого столбца заполняются средним значением этого столбца.medianэто медиана,most_frequentдля большинства.constantУказывает, что пустое значение заполнено пользовательским значением, но это пользовательское значение должно быть передано черезfill_valueопределять.
  • fill_value:strили数值, По умолчаниюZone. когдаstrategy == "constant"час,fill_valueиспользуется для замены всех вхождений отсутствующих значений (missing_values).fill_valueзаZone, при работе с числовыми данными пропущены значения (missing_values) будет заменен на0, для строковых или объектных типов данных замените на"missing_value"эта строка.
  • verbose:int,(дефолт)0,контрольimputerмногословие.
  • copy:boolean,(дефолт)True, указывая на то, что копия данных обрабатывается,FalseИзмените данные на месте.
  • add_indicator:boolean,(дефолт)False,Trueбудут добавлены после данныхnстолбец по0и1состоит из данных одинакового размера,0представляет неотсутствующее значение в местоположении,1Указывает, что местоположение является пропущенным значением.

Общий метод

fit(X)

Возвращаемое значениеSimpleImputer()класс, черезfit(X)метод расчета величины значений корреляции матрицы X для использования при заполнении других матриц отсутствующих данных.


transform(X)

Заполните пропущенные значения, обычно используйте этот метод перед использованиемfit()способ обработки матрицы.

from sklearn.impute import SimpleImputer
import numpy as np

X = np.array([[1, 2, 3],
             [4, 5, 6],
             [7, 8, 9]])
X1 = np.array([[1, 2, np.nan],
               [4, np.nan, 6],
               [np.nan, 8, 9]])
imp = SimpleImputer(missing_values=np.nan, strategy='mean')
imp.fit(X)
print(imp.transform(X1))

# 运行结果
[[1. 2. 6.]
 [4. 5. 6.]
 [4. 8. 9.]]

так какfit(X)иstrategy='mean', поэтому значение заполнения является средним значением каждого столбца матрицы X.


fit_transform(X)

эквивалентноfit() + transform(), обычно используется больше.

X1 = np.array([[1, 2, np.nan],
               [4, np.nan, 6],
               [np.nan, 8, 9]])
imp = SimpleImputer(missing_values=np.nan, strategy='mean')
print(imp.fit_transform(X1))

# 运行结果
[[1.  2.  7.5]
 [4.  5.  6. ]
 [2.5 8.  9. ]]

get_params()

ПолучатьSimpleImputerИнформация о параметрах.

imp = SimpleImputer(missing_values=np.nan, strategy='mean')
print(imp.get_params())

# 运行结果
{'add_indicator': False, 'copy': True, 'fill_value': None, 
'missing_values': nan, 'strategy': 'mean', 'verbose': 0}

inverse_transform(X)

Преобразуйте данные обратно в исходное представление. Отменить операцию преобразования, выполненную над массивом. Эта операция может быть выполнена только сadd_indicator=Trueсоздавать экземплярsimpleImputerпосле казниУведомление: Обратное преобразование может быть обратным преобразованием только в функциях с бинарными индикаторами пропущенных значений. Если признак не содержит пропущенных значений, то у признака нет двоичного индикатора, и назначения во время преобразования не меняются местами. Проще говоря, нет восстановления без замены пропущенных значений.

X1 = np.array([[1, 2, np.nan],
               [4, np.nan, 6],
               [np.nan, 8, 9]])

imp = SimpleImputer(missing_values=np.nan, strategy='mean', add_indicator=True)
X1 = imp.fit_transform(X1)
print(X1)
print(imp.inverse_transform(X1))

# 运行结果
[[1.  2.  7.5 0.  0.  1. ]
 [4.  5.  6.  0.  1.  0. ]
 [2.5 8.  9.  1.  0.  0. ]]
[[ 1.  2. nan]
 [ 4. nan  6.]
 [nan  8.  9.]]

заполнение пользовательского значения

fill_valueнастроить.

X = np.array([[1, 2, 3],
             [4, 5, 6],
             [7, 8, 9]])

imp = SimpleImputer(missing_values=1, strategy='constant', fill_value=666)
print(imp.fit_transform(X))
# 运行结果
[[666 2 3]
 [4 5 6]
 [7 8 9]]

fill_valueзначение по умолчаниюZone.

X = np.array([[1, 2, 3],
             [4, 5, 6],
             [7, 8, 9]])

imp = SimpleImputer(missing_values=1, strategy='constant', fill_value=None)
print(imp.fit_transform(X))

# 运行结果
[[0 2 3]
 [4 5 6]
 [7 8 9]]

Для началаPythonИли хотите начатьPythonдрузей, вы можете искать на WeChat [Python新视野], чтобы общаться и учиться вместе, все исходят от новичков, иногда простой вопрос застревает на долгое время, но, возможно, кто-то еще вдруг поймет это с небольшой помощью.Я искренне надеюсь, что все вместе смогут добиться прогресса.