Введение

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

В этой статье мы покажем, как создать общее решение для машинного обучения в Jupyter Notebook, используя популярную библиотеку Python, sci-kit-learn (SKlearn). Следуя этому руководству, вы можете использовать его в качестве основы для решения любой задачи машинного обучения, будь то регрессия, классификация, кластеризация или уменьшение размерности.

Шаг 1. Импортируйте необходимые библиотеки

Для начала нам нужно импортировать следующие библиотеки:

  • Numpy: библиотека для числовых вычислений на Python.
  • Pandas: библиотека для обработки и анализа данных
  • Matplotlib: библиотека для визуализации данных
  • SKlearn: библиотека машинного обучения, которую мы будем использовать

Вот код для импорта библиотек:

# Get the critical imports out of the way
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

Шаг 2. Загрузите набор данных

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

#getting data
dftrain=pd.read_csv("data/dataset/train.csv")
dftest=pd.read_csv("data/dataset/test.csv")
dftrain.head(5)

Шаг 3. Очистка данных

Это один из самых важных шагов, которые мы выполняем при очистке данных, используя различные методы, такие как проверка на наличие NaN, однократное кодирование или столбцы кодирования меток, которые имеют строковые значения. Кроме того, мы проверяем количество уникальных значений по столбцам, поэтому включаем только те столбцы, поскольку функции имеют разумное соотношение уникальных значений и общих значений. Следующий код объясняет, как вы это делаете:

#checking for Nan
dftrain.isnull().any()
#Exploring unique values by column
dftrain.nunique()
loading Label encoder
# Import label encoder
from sklearn import preprocessing
  
# label_encoder object knows how to understand word labels.
label_encoder = preprocessing.LabelEncoder()
  
# Encode labels in column 'species'.
dftrain['Place']= label_encoder.fit_transform(dftrain['Place'])

Шаг 4. Разделите данные на независимую и зависимую переменную

Прежде чем мы начнем строить нашу модель машинного обучения, важно разделить данные на зависимые (Y) и независимые данные (X).

from sklearn.model_selection import train_test_split
y = dftrain.pop('overall')
X = dftrain

Шаг 5. Масштабирование данных

Далее нам нужно предварительно обработать данные. Это может включать масштабирование, нормализацию или кодирование. В этом примере мы будем масштабировать данные.

from sklearn.preprocessing import StandardScaler
from sklearn.preprocessing import MinMaxScaler

scaler = StandardScaler()
# keep our unscaled features just in case we need to process them alternatively
features_scaled = X 
X_scaled = scaler.fit_transform(features_scaled)

scaler = MinMaxScaler()
# keep our unscaled features just in case we need to process them alternatively
features_minmax = X
X_minmax = scaler.fit_transform(features_minmax)

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

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

############ Standard Scaled test/train set ###########
# The labels/classes (y_train, y_test) never change, keep old values 
X_train_scaled, X_test_scaled, _, _ = train_test_split(
    X_scaled, 
    y, 
    test_size=0.2, 
    random_state=69
)

Шаг 7. Выберите модели и обучите их

Теперь, когда данные предварительно обработаны, мы можем выбрать модель машинного обучения и обучить ее. В SKlearn есть много моделей на выбор, таких как k-ближайших соседей, деревья решений, случайные леса и машины опорных векторов, и это лишь некоторые из них. В этом примере мы будем использовать несколько моделей ML. Теперь, когда модель обучена, мы можем оценить ее производительность. Следующий код объясняет, как вы это делаете:

from sklearn.neighbors import KNeighborsClassifier
from sklearn.svm import SVC
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier, AdaBoostClassifier
from sklearn.naive_bayes import GaussianNB
from sklearn.discriminant_analysis import QuadraticDiscriminantAnalysis

classification_models = [
    KNeighborsClassifier(),#(3),
    SVC(kernel='linear', C=0.025),#, C=0.025),
    SVC(kernel='rbf'),
    DecisionTreeClassifier(),#max_depth=5),
    RandomForestClassifier(),#max_depth=5, n_estimators=10, max_features=1),
    AdaBoostClassifier(),
    GaussianNB(),
    QuadraticDiscriminantAnalysis()]

scores = []
for model in classification_models:
    model.fit(X_train_scaled, y_train)
    score = model.score(X_test_scaled, y_test)
    model_name = type(model).__name__
    if model_name=='SVC' and model.kernel=='rbf': model_name+=' RBF kernel'
    scores.append((model_name,(f'{100*score:.2f}%')))
# Make it pretty
scores_df = pd.DataFrame(scores,columns=['Classifier','Accuracy Score'])
scores_df.sort_values(by='Accuracy Score',axis=0,ascending=False)

Заключение

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

В заключение следует отметить, что блокнот Jupyter служит мощным инструментом для легкого решения любой задачи машинного обучения. Благодаря использованию различных библиотек SKlearn блокнот обеспечивает комплексную основу для создания и тестирования различных моделей машинного обучения. Универсальность ноутбука делает его идеальной отправной точкой для частных лиц и организаций, желающих погрузиться в мир машинного обучения. Используя функциональные возможности библиотек и среды Jupyter, можно исследовать и анализировать сложные наборы данных, выбирать наиболее подходящую модель и развертывать ее на практике. Независимо от того, являетесь ли вы новичком или опытным практиком, эта записная книжка Jupyter является обязательным ресурсом для всех, кто интересуется областью машинного обучения.

Рекомендации

Исходный код на гитхабе: Ссылка