Эта статья участвовала в "Проект «Звезда раскопок»”, чтобы выиграть творческий подарочный пакет и бросить вызов творческим поощрительным деньгам.
Мало знаний, большой вызов! Эта статья участвует в "Необходимые знания для программистов«Творческая деятельность.
предварительная обработка. StandardScaler
Когда данные (x) центрируются по среднему значению (μ), а затем масштабируются по стандартному отклонению (σ), данные будут подчиняться нормальному распределению со средним значением 0 и дисперсией 1 (т. е. стандартное нормальное распределение), и этот процесс, который называется стандартизацией данных (стандартизация, также известная как нормализация Z-оценки),
from sklearn.preprocessing import StandardScaler
data = [[-1, 2], [-0.5, 6], [0, 10], [1, 18]]
scaler = StandardScaler() #实例化
scaler.fit(data) #fit,本质是生成均值和方差
scaler.mean_ #查看均值的属性mean_
scaler.var_ #查看方差的属性var_
x_std = scaler.transform(data) #通过接口导出结果
x_std.mean() #导出的结果是一个数组,用mean()查看均值
x_std.std() #用std()查看方差
scaler.fit_transform(data) #使用fit_transform(data)一步达成结果
scaler.inverse_transform(x_std) #使用inverse_transform逆转标准化
Для StandardScaler и MinMaxScaler нулевое значение NaN будет рассматриваться как отсутствующее значение, игнорироваться во время подгонки и отображаться как отсутствующее значение NaN во время преобразования. Более того, хотя процесс деразмеризации не является конкретным алгоритмом, в интерфейсе подгонки по-прежнему разрешено импортировать как минимум двумерные массивы, а при импорте одномерных массивов будет сообщено об ошибке. Обычно вводимое нами значение X будет нашей матрицей признаков.В реальных случаях матрица признаков вряд ли будет одномерной, поэтому этой проблемы не существует.
StandardScaler и MinMaxScaler какой выбрать?
- По-разному. В большинстве алгоритмов машинного обучения для масштабирования функций выбирается StandardScaler, поскольку MinMaxScaler очень чувствителен к выбросам. Среди алгоритмов PCA, кластеризации, логистической регрессии, машин опорных векторов и нейронных сетей StandardScaler часто является лучшим выбором.
- MinMaxScaler широко используется, когда он не включает метрику расстояния, градиент, вычисление ковариации и данные необходимо сжать в определенный интервал.Например, при количественной оценке интенсивности пикселей в цифровой обработке изображений MinMaxScaler используется для сжатия данных в [0, 1] интервал.
- Рекомендуется сначала попробовать StandardScaler, если эффект неудовлетворительный, перейти на MinMaxScaler.
- В дополнение к StandardScaler и MinMaxScaler в sklearn также предусмотрены различные другие процессы масштабирования (для централизации требуется только широковещательная рассылка pandas для вычитания определенного числа, поэтому sklearn не предоставляет никакой функции централизации). Например, когда мы хотим сжать данные, не влияя на разреженность данных (когда не влияет количество нулевых значений в матрице), мы будем использовать MaxAbsScaler; когда много выбросов и шум очень большое, мы можем выбрать Число бит безразмерное, и в этом случае используется RobustScaler.
Два пропущенных значения
Данные, используемые в машинном обучении и интеллектуальном анализе данных, никогда не могут быть идеальными. Многие признаки имеют большое значение для анализа и моделирования, но не для тех, кто реально собирает данные, поэтому при интеллектуальном анализе данных часто бывает много пропущенных значений в важных полях, но отбрасывать поля нельзя. Поэтому очень важной частью предварительной обработки данных является работа с пропущенными значениями.
import pandas as pd
data = pd.read_csv(r".\Narrativedata.csv"
,index_col=0
)#index_col=0将第0列作为索引,不写则认为第0列为特征
класс impute.SimpleImputer sklearn.impute.SimpleImputer (missing_values=nan, Strategy='mean', fill_value=None, verbose=0, copy=True) Мы вменяем пропущенные значения с помощью этого класса, который предназначен для вменения пропущенных значений. Он включает в себя четыре важных параметра
- missing_values
- Сообщите Simplelmputer, как выглядят отсутствующие значения в данных, нулевое значение по умолчанию np.nan
- strategy
- Наша стратегия вменения отсутствующих значений, среднее значение по умолчанию.
- Введите «среднее», чтобы использовать среднее заполнение (доступно только для числовых функций).
- Введите «медиану», чтобы заполнить среднее значение (только для числового признака)
- Введите «most_frequent» с заполнением режима (доступно как для числовых, так и для символьных функций)
- Ввод «константы» означает, что необходимо обратиться к значению параметра «fill_value» (доступно как для числовых, так и для символьных функций).
- fill_value
- Доступно, когда параметр startegy является «постоянным», вы можете ввести строку или число, чтобы указать значение, которое будет заполнено, обычно используется O
- copy
- По умолчанию установлено значение True, что создаст копию матрицы признаков, в противном случае недостающие значения будут заполнены исходной матрицей признаков.
data.info()
#填补年龄
Age = data.loc[:,"Age"].values.reshape(-1,1) #sklearn当中特征矩阵必须是二维
Age[:20]
from sklearn.impute import SimpleImputer
imp_mean = SimpleImputer() #实例化,默认均值填补
imp_median = SimpleImputer(strategy="median") #用中位数填补
imp_0 = SimpleImputer(strategy="constant",fill_value=0) #用0填补
imp_mean = imp_mean.fit_transform(Age) #fit_transform一步完成调取结果
imp_median = imp_median.fit_transform(Age)
imp_0 = imp_0.fit_transform(Age)
imp_mean[:20]
imp_median[:20]
imp_0[:20]
#在这里我们使用中位数填补Age
data.loc[:,"Age"] = imp_median
data.info()
#使用众数填补Embarked
Embarked = data.loc[:,"Embarked"].values.reshape(-1,1)
imp_mode = SimpleImputer(strategy = "most_frequent")
data.loc[:,"Embarked"] = imp_mode.fit_transform(Embarked)
data.info()