Машинное обучение 1: Предварительная обработка данных

машинное обучение искусственный интеллект алгоритм pandas

Недавно я узнал о машинном обучении, и мне трудно начать. Раньше я изучал видео г-на Ву Энда и обнаружил, что есть еще много моментов, которые трудно понять. Не так давно вышел китайский перевод «Машинного обучения от А до Я», и речь учителя была очень проста для понимания, поэтому я начал следить за ней.

Для систематизации полученных знаний, а также в качестве самоконтроля, я организую более систематизированные точки знаний на блоге. Соответствующий код также будет синхронизирован с github.

Весь следующий код написан на Python, а для предварительной обработки данных в основном используется модуль sklearn.preprocessing [СК Learn.apachecai.org/cai/0.19.0/no…]

содержание

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

1. Импортируйте стандартную библиотеку

  • Numpy: содержит множество математических методов, необходимых для машинного обучения.
  • matplotlib.pyplot: в основном используется для построения графиков
  • pandas: импортировать наборы данных и выполнять серию обработок наборов данных
import numpy as np
import matplotlib.pyplot as plt 
import pandas as pd

2. Импортируйте набор данных

Параметры в массиве iloc: левая часть запятой указывает количество строк, правая часть запятой указывает количество столбцов, а двоеточие указывает, что выбраны все строки или столбцы

# Import the dataset
dataset = pd.read_csv('Data.csv')
X = dataset.iloc[:,:-1].values
y = dataset.iloc[:,3].values

3. Отсутствующие данные

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

Класс Imputer в основном используется для обработки отсутствующих данных. Ось параметров:

  • ось = 0 взять среднее значение столбца
  • ось = 1 взять среднее значение строки

Стратегия параметров: стратегия: строка, необязательно (по умолчанию = "среднее") Стратегия вменения.

  • If "mean", then replace missing values using the mean along the axis.
  • If "median", then replace missing values using the median along the axis.
  • If "most_frequent", then replace missing using the most frequent value along the axis.
# Taking care of missing data
from sklearn.preprocessing import Imputer
imputer = Imputer(missing_values="NaN",strategy="mean",axis=0)
imputer.fit(X[:,1:3])  #代表1和2
X[:,1:3] = imputer.transform(X[:,1:3])

4. Категориальные данные

4.1 Кодировка тегов

Что он делает: Преобразует текст в числа.

Недостатки: В начале нет числового различия между разными национальностями.После преобразования разных стран в числовые значения 0, 1 и 2, есть размеры для разных классов, поэтому сортируются разные классы.

Решение: однократное кодирование (фиктивное кодирование)

4.2. Горячее кодирование (фиктивное кодирование)

# Encoding categorical data
from sklearn.preprocessing import LabelEncoder,OneHotEncoder
labelencoder_X = LabelEncoder()
X[:, 0] = labelencoder_X.fit_transform(X[:,0])

onehotencoder = OneHotEncoder(categorical_features = [0])
X = onehotencoder.fit_transform(X).toarray()

labelencoder_y = LabelEncoder()
y = labelencoder_y.fit_transform(y)

# Encode labels with value between 0 and n_classes-1(将不同组的名称转换为数字)

5. Разделите набор данных на обучающий набор и тестовый набор.

  • test_size: от 0 до 1, обычно значение по умолчанию 0,25, лучше 0,2 или 0,25.
  • random_state: определяет, как генерируются случайные числа
# splitting dataset into Training set and Test set
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)

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

Зачем использовать масштабирование данных?

Евклидово расстояние (длина отрезка между двумя точками) очень важно во многих алгоритмах машинного обучения.

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

Чтобы решить эту проблему, нам нужно масштабировать Возраст и Зарплату до одного порядка.

6.1 Стандартизация

Полученные новые данные имеют среднее значение 0 и дисперсию 1. Используется в машинах опорных векторов, логистической регрессии, нейронных сетях.

# Feature Scaling
from sklearn.preprocessing import StandardScaler
sc_X = StandardScaler()
X_train = sc_X.fit_transform(X_train)
X_test = sc_X.transform(X_test)

6.2 Нормализация

Приведите все значения между 0 и 1

import sklearn.preprocessing as sp
mms = sp.MinMaxScaler(feature_range=(0,1))
mms_samples2 = mms.fit_transform(raw_samples)

7. Шаблон предварительной обработки данных

import numpy as np
import matplotlib.pyplot as plt 
import pandas as pd

# Import the dataset
dataset = pd.read_csv('Data.csv')
X = dataset.iloc[:,:-1].values
y = dataset.iloc[:,3].values

# Taking care of missing data
from sklearn.preprocessing import Imputer
imputer = Imputer(missing_values="NaN",strategy="mean",axis=0)
imputer = Imputer()
test = imputer.fit(X[:,1:3])
X[:,1:3] = imputer.transform(X[:,1:3])

# Encoding categorical data
from sklearn.preprocessing import LabelEncoder,OneHotEncoder
labelencoder_X = LabelEncoder()
X[:, 0] = labelencoder_X.fit_transform(X[:,0])
onehotencoder = OneHotEncoder(categorical_features = [0])
X = onehotencoder.fit_transform(X).toarray()
labelencoder_y = LabelEncoder()
y = labelencoder_y.fit_transform(y)

# Splitting the dataset into the Training set and Test set
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)

# Feature Scaling
from sklearn.preprocessing import StandardScaler
sc_X = StandardScaler()
X_train = sc_X.fit_transform(X_train)
X_test = sc_X.transform(X_test)

8. Вопросы

8.1 В чем разница между fit, fit_transform и transform?

  • fit (): Проще говоря, это поиск среднего значения, дисперсии, максимального и минимального значений тренировочного набора, то есть атрибутов тренировочного набора X, что можно понимать как процесс обучения;
  • Transform(): на основе подгонки выполняются стандартизация, уменьшение размерности, нормализация и другие операции;
  • fit_transform(): представляет собой комбинацию подгонки и преобразования, включая обучение и преобразование.

Уведомление:

  1. Вы должны сначала использовать fit_transform(trainData), а затем использовать transform(testData);
  2. Если вы используете transform(testData) напрямую, будет сообщено об ошибке;
  3. Если после fit_transform(trainData) использовать fit_transform(testData) вместо transform(testData), хотя его можно нормализовать, два результата не соответствуют одному и тому же «стандарту» и имеют очевидные различия.

8.2 В чем разница между нормализацией и нормализацией и сценариями, в которых они работают?

woo woo woo Краткое описание.com/afraid/95 ah 8 035 от…