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

Настройка среды Python для машинного обучения

Прежде чем мы начнем, важно настроить среду Python для машинного обучения. Для этого есть несколько вариантов, в том числе установка Python и необходимых библиотек на локальном компьютере, использование предварительно настроенной среды Python, такой как Anaconda, или использование облачной платформы, такой как Google Colab.

Если вы решите установить Python и необходимые библиотеки на свой локальный компьютер, вам потребуется установить Python 3 и следующие библиотеки:

  • NumPy: библиотека для числовых вычислений на Python.
  • Pandas: библиотека для обработки и анализа данных
  • Matplotlib: библиотека для визуализации данных
  • Scikit-learn: библиотека для машинного обучения на Python

Вы можете установить эти библиотеки с помощью pip, менеджера пакетов Python, выполнив следующие команды в своем терминале:

pip install numpy
pip install pandas
pip install matplotlib
pip install scikit-learn

Anaconda — это предварительно настроенная среда Python, которая включает в себя множество библиотек, обычно используемых для обработки данных и машинного обучения, включая NumPy, Pandas, Matplotlib и Scikit-learn. Anaconda можно загрузить с веб-сайта Anaconda (https://www.anaconda.com/) и установить на свой локальный компьютер.

Google Colab — это облачная платформа, которая позволяет вам писать и выполнять код Python в веб-браузере. Colab особенно полезен для машинного обучения, поскольку он предоставляет доступ к мощным графическим процессорам для обучения моделей машинного обучения. Чтобы использовать Colab, вам потребуется учетная запись Google, после чего вы сможете получить доступ к Colab, посетив https://colab.research.google.com/.

Изучение и подготовка данных

Прежде чем мы сможем построить модель машинного обучения, нам нужно иметь набор данных для работы. В этом руководстве мы будем использовать набор данных California Housing, который содержит информацию о среднем доходе, средней стоимости дома и других характеристиках домохозяйств в Калифорнии.

Во-первых, нам нужно загрузить набор данных в Pandas DataFrame. Мы можем сделать это с помощью функции pandas.read_csv():

import pandas as pd

df = pd.read_csv('https://download.mlcc.google.com/mledu-datasets/california_housing_train.csv')

Затем мы можем использовать метод head() для просмотра первых нескольких строк DataFrame:

df.head()

Это выведет первые пять строк DataFrame вместе с именами столбцов.

Всегда полезно изучить и понять данные, прежде чем создавать модель машинного обучения. Мы можем использовать метод describe(), чтобы получить сводную статистику числовых столбцов в DataFrame:

df.describe()

Мы также можем использовать метод info() для получения информации о типах данных и количестве ненулевых значений в каждом столбце:

df.info()

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

Мы можем использовать функцию train_test_split() из библиотеки Scikit-learn, чтобы разделить данные на обучающий набор и тестовый набор. Эта функция принимает функции и метки набора данных в качестве входных данных и возвращает разделенные обучающие и тестовые наборы.

from sklearn.model_selection import train_test_split

# Split the data into features and labels
X = df.drop('median_house_value', axis=1)
y = df['median_house_value']

# Split the data into training and test sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

В этом примере мы используем все столбцы, кроме median_house_value в качестве объектов (X) и median_house_value в качестве метки (y). Мы также устанавливаем тестовый набор равным 20% от общего объема данных и используем параметр random_state, чтобы гарантировать, что при каждом запуске кода создается одно и то же разделение.

Построение и обучение модели машинного обучения

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

Во-первых, нам нужно импортировать модель LinearRegression из Scikit-learn:

from sklearn.linear_model import LinearRegression

Далее мы можем создать экземпляр модели LinearRegression:

model = LinearRegression()

Чтобы обучить модель, нам нужно вызвать метод fit() и передать обучающие данные и метки:

model.fit(X_train, y_train)

Теперь модель обучена и может использоваться для прогнозирования новых данных.

Оценка модели

Теперь, когда мы обучили модель, мы можем оценить ее производительность на тестовом наборе. Один из способов сделать это — использовать метод score(), который возвращает коэффициент детерминации (R^2) прогноза. Оценка R^2 — это мера того, насколько хорошо модель соответствует данным, при этом оценка 1,0 указывает на идеальное соответствие.

r2_score = model.score(X_test, y_test)
print(r2_score)

Другой способ оценить модель — использовать функции mean_absolute_error() и mean_squared_error() из библиотеки Scikit-learn, которые вычисляют среднюю абсолютную ошибку и среднеквадратичную ошибку прогнозов соответственно. Эти метрики ошибок дают представление о величине ошибки в прогнозах.

from sklearn.metrics import mean_absolute_error, mean_squared_error

y_pred = model.predict(X_test)
mae = mean_absolute_error(y_test, y_pred)
mse = mean_squared_error(y_test, y_pred)

print("Mean Absolute Error:", mae)
print("Mean Squared Error:", mse)

Также полезно визуализировать производительность модели путем построения графика прогнозируемых значений в сравнении с истинными значениями. Мы можем сделать это с помощью Matplotlib:

import matplotlib.pyplot as plt

plt.scatter(y_test, y_pred)
plt.plot([y_test.min(), y_test.max()], [y_test.min(), y_test.max()], 'k--', lw=2)
plt.xlabel('True value')
plt.ylabel('Predicted value')
plt.show()

Это создаст точечную диаграмму с прогнозируемыми значениями по оси Y и истинными значениями по оси X, а также с диагональной линией, представляющей идеальные прогнозы.

Улучшение модели

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

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

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

Заключение

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