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