Это третий день моего участия в Gengwen Challenge.Подробности о мероприятии, пожалуйста, проверьте:Обновить вызов
В начале изучения машинного обучения первое, что вам нужно понять, это часть предварительной обработки данных.Предварительная обработка данных заключается в подготовке данных в формате, который можно использовать для подбора и обучения данных, чтобы мы могли использовать эти данные. , нам может понадобиться пройти:
- подготовка данных
- обрабатывать реальные данные
- Преобразование кодировки тегов
- виртуальное перекодирование
- Создание обучающих и тестовых наборов
- Масштабирование функций
Выполните несколько действий, чтобы подготовить данные для использования с машинным обучением.
подготовка базовой библиотеки
Нам вообще нужно представить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)