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

Но не бойтесь, уважаемый специалист по данным! Представляю вам лучшее спасение, единый магазин для всех ваших потребностей в scikit-learn — шпаргалку Scikit-Learn для специалистов по данным.

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

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

Итак, являетесь ли вы опытным ветераном или только начинаете, пристегнитесь и приготовьтесь к безумной поездке по захватывающему миру обучения науке!

Для кого эта шпаргалка?

Эта шпаргалка идеально подходит для:

  • Исследователи данных, которые плохо знакомы с scikit-learn и нуждаются в быстрой справке
  • Опытные специалисты по данным, которые хотят освежить в памяти основы
  • Любые энтузиасты науки о данных, которые хотят узнать больше о scikit-learn и его возможностях.

Итак, если вы подходите под любую из этих категорий, продолжайте читать!

Предварительная обработка данных: команда очистки

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

Импорт и экспорт данных

Прежде всего, давайте перенесем ваши данные в Python, чтобы вы могли начать с ними работать. С помощью scikit-learn вы можете легко импортировать свои данные, используя популярные форматы данных, такие как CSV, Excel и другие.

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

import pandas as pd
# import data from a csv file
df = pd.read_csv("data.csv")
# export data to a csv file
df.to_csv("results.csv", index=False)

Обработка пропущенных значений

Отсутствующие значения могут вызвать большую головную боль при построении моделей. К счастью, в scikit-learn есть несколько методов для обработки пропущенных значений, поэтому вам не нужно о них беспокоиться.

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

from sklearn.impute import SimpleImputer
# replace missing values with the mean
imp = SimpleImputer(strategy="mean")
df = imp.fit_transform(df)

Кодирование категориальных переменных

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

С помощью scikit-learn вы можете легко кодировать категориальные переменные, используя такие методы, как горячее кодирование, кодирование меток и многое другое.

from sklearn.preprocessing import OneHotEncoder
# one-hot encode categorical variables
ohe = OneHotEncoder(categories="auto")
df = ohe.fit_transform(df)

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

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

from sklearn.model_selection import train_test_split
# split data into training and testing sets
train_data, test_data, train_labels, test_labels = train_test_split(df, labels, test_size=0.2)

Построение модели: подъем тяжестей

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

Линейная регрессия

Линейная регрессия — это простая, но мощная модель для прогнозирования непрерывных переменных. Он делает предположение, что связь между независимыми и зависимыми переменными является линейной.

from sklearn.linear_model import LinearRegression
# create and fit a linear regression model
reg = LinearRegression().fit(train_data, train_labels)
# make predictions on the test data
predictions = reg.predict(test_data)

Логистическая регрессия

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

from sklearn.linear_model import LogisticRegression
# create and fit a logistic regression model
reg = LogisticRegression().fit(train_data, train_labels)
# make predictions on the test data
predictions = reg.predict(test_data)

Деревья решений

Деревья решений — это тип модели, которая работает путем разделения ваших данных на все более мелкие группы в зависимости от определенных условий. Их легко понять и интерпретировать, и они часто используются для задач классификации и регрессии.

from sklearn.tree import DecisionTreeClassifier
# create and fit a decision tree model
tree = DecisionTreeClassifier().fit(train_data, train_labels)
# make predictions on the test data
predictions = tree.predict(test_data)

Случайные леса

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

from sklearn.ensemble import RandomForestClassifier
# create and fit a random forest model
forest = RandomForestClassifier().fit(train_data, train_labels)
# make predictions on the test data
predictions = forest.predict(test_data)

Опорные векторные машины

Машины опорных векторов (SVM) — это тип модели, который часто используется для задач классификации. Они работают, находя линию (или гиперплоскость), которая лучше всего разделяет различные классы в ваших данных.

from sklearn.svm import SVC
# create and fit a support vector machine model
svm = SVC().fit(train_data, train_labels)
# make predictions on the test data
predictions = svm.predict(test_data)

Оценка модели: откуда вы знаете, что она работает?

Хорошо, вы построили модель, но как узнать, хороша ли она? Вот тут-то и начинается оценка модели.

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

Точность модели

Точность — самый простой показатель для оценки модели. Это просто количество правильных прогнозов, деленное на общее количество прогнозов.

# calculate the accuracy of the model
accuracy = sum(predictions == test_labels) / len(test_labels)

Матрица путаницы

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

from sklearn.metrics import confusion_matrix
# calculate the confusion matrix
cm = confusion_matrix(test_labels, predictions)

Точность и отзыв

Точность и полнота — это две метрики, которые часто используются вместе для оценки производительности модели. Точность — это количество истинных положительных прогнозов, деленное на количество истинных положительных и ложных положительных прогнозов. Отзыв — это количество истинных положительных прогнозов, деленное на количество истинных положительных и ложных отрицательных предсказаний.

from sklearn.metrics import precision_recall_fscore_support
# calculate precision, recall, and f1 score
precision, recall, f1, support = precision_recall_fscore_support(test_labels, predictions, average='binary')

Оценка F1

Оценка F1 представляет собой гармоническое среднее точности и полноты. Он обеспечивает единую оценку, которая учитывает как точность, так и полноту.

from sklearn.metrics import f1_score
# calculate the f1 score
f1 = f1_score(test_labels, predictions)

ROC-кривая

Кривая ROC (рабочая характеристика приемника) представляет собой график, показывающий компромисс между истинной положительной скоростью и ложноположительной скоростью модели. Он часто используется для задач бинарной классификации.

from sklearn.metrics import roc_auc_score
# calculate the roc auc score
roc_auc = roc_auc_score(test_labels, predictions)

Перекрестная проверка

Перекрестная проверка — это метод оценки производительности модели путем разделения данных на несколько групп и использования каждой группы в качестве тестового набора по очереди. Он обеспечивает более надежную оценку производительности модели и может помочь предотвратить переоснащение.

from sklearn.model_selection import cross_val_score
# calculate the cross-validation score
cv_score = cross_val_score(model, data, labels, cv=5)

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

Поиск по сетке

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

from sklearn.model_selection import GridSearchCV
# define the hyperparameter grid to search
param_grid = {'alpha': [0.1, 1.0, 10.0], 'max_iter': [100, 1000, 10000]}
# perform the grid search
grid_search = GridSearchCV(model, param_grid, cv=5)
grid_search.fit(train_data, train_labels)

Выбор функции

Выбор функций — это процесс выбора наиболее подходящих функций для использования в модели. Это может улучшить производительность модели и уменьшить переоснащение. Scikit-learn предоставляет несколько методов выбора функций, включая SelectKBest, RFE и LassoCV.

from sklearn.feature_selection import SelectKBest
# create the feature selector
selector = SelectKBest(k=10)
# fit the selector to the data
selector.fit(data, labels)
# view the selected features
selected_features = selector.get_support()

И это обертка! Теперь у вас есть исчерпывающая шпаргалка для навигации по библиотеке scikit-learn и создания эффективных моделей для ваших данных. Помните, это только верхушка айсберга. С помощью scikit-learn вы можете узнать и сделать гораздо больше, так что продолжайте изучать и оттачивать свои навыки.

Если эта шпаргалка оказалась вам полезной, обязательно подпишитесь на меня в Medium, чтобы получить больше информации и руководств по науке о данных и машинному обучению. Давайте продолжим наш путь к тому, чтобы стать первоклассными учеными данных вместе!