Введение в машинное обучение - 03. Предварительная обработка данных

машинное обучение
Введение в машинное обучение - 03. Предварительная обработка данных

Это третий день моего участия в Gengwen Challenge.Подробности о мероприятии, пожалуйста, проверьте:Обновить вызов

В начале изучения машинного обучения первое, что вам нужно понять, это часть предварительной обработки данных.Предварительная обработка данных заключается в подготовке данных в формате, который можно использовать для подбора и обучения данных, чтобы мы могли использовать эти данные. , нам может понадобиться пройти:

  1. подготовка данных
  2. обрабатывать реальные данные
  3. Преобразование кодировки тегов
  4. виртуальное перекодирование
  5. Создание обучающих и тестовых наборов
  6. Масштабирование функций

Выполните несколько действий, чтобы подготовить данные для использования с машинным обучением.

подготовка базовой библиотеки


Нам вообще нужно представитьnumpy,pandas,matplotlibВ качестве базовой библиотеки для облегчения наших последующих операций с данными

### 导入基础库
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

подготовка данных


Обработка в соответствии с форматом подготовки данных, которая может быть выполненаpandasчитать общие данные

dataset = pd.read_csv('Data.csv')

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

# 设置自变量列,因变量列
X = dataset.iloc[:,:-1]. values
Y = dataset.iloc[:,3].values

обрабатывать реальные данные


В данных независимой переменной будут какие-то пустые данные, то есть отсутствующие данные. Как правило, нам нужно обработать и дополнить эти отсутствующие данные. Здесь мы используемsklearnизSimpleImputerчтобы завершить эту операцию

### 处理缺失数据
from sklearn.impute import SimpleImputer
# 创建imputer对象
# mean 使用平均数进行填充
# mediain 使用中位数进行填充
imputer = SimpleImputer(missing_values=np.nan,strategy= 'median')
# 拟合并计算生成缺失数据
X[:,1:3] = imputer.fit_transform(X[:,1:3])

вSimpleImputerпараметрыmissing_valuesэто отсутствующий тип данных, который необходимо заполнить, параметрstrategyявляется соответствующей стратегией завершения, общие из нихmean,mediainи т.д. стратегия.

Кодирование преобразования тегов


Преобразование кодировки тегов заключается в преобразовании некоторых символьных данных, которые необходимо обработать, в цифровую кодировку, которую можно обрабатывать напрямую, например国家,职位Ожидание данных, при обработке данных вам нужно только преобразовать их в 1, 2, 3 для отображения, используйте здесьsklearnизLabelEncoderдля обработки.

### 标签转换编码
# 将标签转换为1,2,3
from sklearn.preprocessing import LabelEncoder;
labelencoder_X = LabelEncoder()
# 对自变量列实现数字编码
X[:,0] = labelencoder_X.fit_transform(X[:,0]) 
# 对因变量列实现数字编码
labelencoder_Y = LabelEncoder()
Y = labelencoder_X.fit_transform(Y)

виртуальное перекодирование


В некоторых данных меток нет отношения размера и порядка, например, преобразование страны в 1, 2, 3, чтобы исключить эти эффекты, нам нужно преобразовать их вфиктивное кодированиеотображать, например0 0 1,0 1 0 ,1 0 0Таким образом, пусть данные просто отмечают свой тип, а не другие отношения. Здесь нам нужно использоватьsklearnизOneHotEncoderиColumnTransformerобрабатывать

### 虚拟编码
# 将标签转换为0,0,1 0,1,0 1,0,0
from sklearn.preprocessing import OneHotEncoder;
from sklearn.compose import ColumnTransformer 
# 进行虚拟编码
onehotEncoder = OneHotEncoder() 
# 对第0列实现虚拟编码
ct = ColumnTransformer([("OneHot", OneHotEncoder(),[0])], remainder="passthrough")
X = ct.fit_transform(X)

Создание обучающих и тестовых наборов


Как только данные готовы, нам нужно разделить данные наОбучающий наборитестовый наборВ двух частях мы используемsklearnизtrain_test_splitдля обработки.

### 生成训练集与测试集
from sklearn.model_selection import train_test_split
# 使用固定值生成训练集/测试集
X_train,X_test,Y_train,Y_test = train_test_split(X,Y,test_size=0.2,random_state=0)

Масштабирование функций


После того, как все данные будут готовы, могут возникнуть некоторые другие вопросы, например, сумма в данных может быть1800000元, возраст может быть18лет, порядок величины этих данных слишком разный, что может как-то повлиять на результаты расчетов.В некоторых случаях мы хотим превратить их в данные одного уровня для обработки.В этом случае требуется масштабирование признаков. Мы используемsklearnПриходитьStandardScalerвыполнить масштабирование функций.

### 特征缩放
# 将不同数量级的数据,缩放到同一数量级
from sklearn.preprocessing import StandardScaler
# 对自变量进行特征缩放
sc_X = StandardScaler()
X_train = sc_X.fit_transform(X_train)
X_test = sc_X.transform(X_test)

Здесь мы в основном завершили предварительную обработку данных. Только мы можем подобрать и обучить данные. Мы узнаем о линейной регрессии в следующей главе. Полный код предварительной обработки данных выглядит следующим образом:

# 数据预处理

### 导入基础库
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

### 导入数据
dataset = pd.read_csv('Data.csv')

# 设置自变量列,因变量列
X = dataset.iloc[:,:-1]. values
Y = dataset.iloc[:,3].values

### 处理缺失数据
from sklearn.impute import SimpleImputer
# 创建imputer对象
# mean 使用平均数进行填充
# mediain 使用中位数进行填充
imputer = SimpleImputer(missing_values=np.nan,strategy= 'median')
# 拟合imputer对象
# 实际是使用拟合结果进行填充
#imputer = imputer.fit(X[:,1:3])
# 计算缺失对象
# X[:,1:3]= imputer.transform(X[:,1:3]) 
# 可以将拟合与计算两部合并处理
X[:,1:3] = imputer.fit_transform(X[:,1:3])
 

### 标签转换编码
# 将标签转换为1,2,3
from sklearn.preprocessing import LabelEncoder;
labelencoder_X = LabelEncoder()
# 拟合并转换
X[:,0] = labelencoder_X.fit_transform(X[:,0]) 

### 虚拟编码
# 将标签转换为0,0,1 0,1,0 1,0,0
from sklearn.preprocessing import OneHotEncoder;
from sklearn.compose import ColumnTransformer 
# 对国家列实现虚拟编码
onehotEncoder = OneHotEncoder() 
ct = ColumnTransformer([("OneHot", OneHotEncoder(),[0])], remainder="passthrough") # The last arg ([0]) is the list of columns you want to transform in this step
X = ct.fit_transform(X)

# 对因变量列实现数字编码
labelencoder_Y = LabelEncoder()
Y = labelencoder_X.fit_transform(Y)


### 生成训练集与测试集
from sklearn.model_selection import train_test_split
# 使用固定值生成训练集/测试集
X_train,X_test,Y_train,Y_test = train_test_split(X,Y,test_size=0.2,random_state=0)

### 特征缩放
# 将不同数量级的数据,缩放到同一数量级
from sklearn.preprocessing import StandardScaler
# 对自变量进行特征缩放
sc_X = StandardScaler()
X_train = sc_X.fit_transform(X_train)
X_test = sc_X.transform(X_test)