Создаём первую модель машинного обучения - используем Colab, Pandas и Sklearn

Для начала работы с машинным обучением вам понадобится Jupyter Notebook на платформе Google Colab, библиотеки Pandas для работы с данными и Sklearn для создания и обучения моделей. В этом руководстве вы научитесь создавать простую модель классификации с использованием этих инструментов.
Шаг 1: Импортируйте необходимые библиотеки и загрузите набор данных. Используйте следующий код:
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
# Загрузка данных (например, из CSV)
data = pd.read_csv('ваш_файл.csv')
Замените 'ваш_файл.csv' на путь к вашему файлу данных. Обращайте внимание на типы данных в ваших колонках. При необходимости, используйте pd.to_numeric или pd.to_datetime для их преобразования.
Шаг 2: Разделите данные на обучающую и тестовую выборки для оценки работы модели на новых данных. Используйте train_test_split:
X = data[['колонка1', 'колонка2']] # Пример выбора признаков
y = data['целевая_переменная']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
Замените 'колонка1', 'колонка2' и 'целевая_переменная' на названия ваших столбцов. Значение `test_size=0.2` означает, что 20% данных будут использованы для тестирования. random_state
гарантирует воспроизводимость результатов.
Шаг 3: Создайте и обучите модель. Выберите подходящую модель, например, логистическую регрессию:
model = LogisticRegression()
model.fit(X_train, y_train)
Шаг 4: Сделайте предсказания на тестовой выборке и оцените точность модели:
predictions = model.predict(X_test)
accuracy = accuracy_score(y_test, predictions)
print(f'Точность модели: {accuracy}')
Этот пример поможет вам начать работу. В последующих шагах можно экспериментировать с другими моделями и параметрами для улучшения качества модели.
Установка и настройка среды Colab
Для начала откройте Google Colab: https://colab.research.google.com/.
Шаг 1: Создание нового блокнота. Нажмите "Создать новый блокнот".
- Выберите тип: "Python 3".
Шаг 2: Инициализация необходимых библиотек. В первом ячейке, которую вы видите, введите:
!pip install pandas scikit-learn
import pandas as pd
import sklearn as skl
И нажмите "Выполнить". Это установит библиотеки Pandas и scikit-learn, необходимые для работы.
- Если у вас возникнут проблемы с установкой Pandas или scikit-learn, проверьте подключение к интернету.
Шаг 3: Проверка установки. В следующей ячейке попробуйте:
print(pd.__version__)
print(skl.__version__)
Вы увидите номер версии библиотек. Если вычисление прошло успешно, значит, установка библиотек прошла корректно.
Шаг 4 (Важно!): Импортируйте библиотеки в следующем формате, а не в другом:
import pandas as pd
import sklearn
Этот формат важен для последующего использования библиотек!
Теперь ваша среда Colab настроена для работы с Pandas и scikit-learn.
Обработка данных с помощью Pandas
Для начала загрузите ваш датасет в DataFrame Pandas:
import pandas as pd
df = pd.read_csv('ваш_файл.csv')
Теперь вы можете просмотреть первые 5 строк:
df.head()
Чтобы увидеть типы данных столбцов:
df.dtypes
Предположим, у вас есть столбец с ошибочными данными (например, строка вместо числового значения). Исправьте его:
df['столбец'] = pd.to_numeric(df['столбец'], errors='coerce')
Замените NaN на 0:
df['столбец'] = df['столбец'].fillna(0)
Для удаления строк с пропусками во всех столбцах:
df.dropna(how='all', inplace=True)
Если нужно выделить столбец с числовыми значениями для дальнейшей обработки:
numeric_cols = df.select_dtypes(include=['number']).columns
numeric_df = df[numeric_cols]
Разделение данных на обучающую и тестовую выборки
Необходимо разделить данные на две части: обучающую и тестовую. Это крайне важно для оценки точности модели. Для этого используйте функцию train_test_split
из библиотеки Scikit-learn. Пример:
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris
# Загружаем данные
iris = load_iris()
X = iris.data
y = iris.target
# Разделяем данные на обучающую и тестовую выборки
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
В коде:
test_size=0.2
определяет, что 20% данных будет использовано для тестирования, а 80% - для обучения.
random_state=42
задаёт фиксированное значение для генератора случайных чисел, что делает процесс воспроизводимым.
После разделения, используйте X_train
и y_train
для обучения модели и X_test
и y_test
для оценки её работы на независимых данных.
Обучение модели машинного обучения (например, линейной регрессии)
Для обучения модели линейной регрессии с помощью sklearn
, используйте функцию LinearRegression()
. Примените её к подготовленным данным. Например:
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(X_train, y_train)
Здесь X_train
- матрица признаков обучающей выборки, y_train
- вектор целевой переменной обучающей выборки. После выполнения этой команды модель будет обучена.
Чтобы получить предсказания, используйте метод predict()
:
y_pred = model.predict(X_test)
Где X_test
- матрица признаков тестовой выборки, а y_pred
- вектор предсказанных значений.
Оцените качество модели с помощью метрик, таких как R-квадрат (r2_score
) или среднеквадратичная ошибка (mean_squared_error
) на тестовой выборке.
from sklearn.metrics import r2_score, mean_squared_error
r2 = r2_score(y_test, y_pred)
mse = mean_squared_error(y_test, y_pred)
Значение R-квадрат показывает, насколько хорошо модель описывает данные (ближе к 1 - лучше). MSE показывает среднюю ошибку предсказаний на тестовой выборке (меньше - лучше). Обратите внимание на правильную выборку данных для обучения и тестирования (важно предотвратить переобучение).
Оценка качества модели и интерпретация результатов
Для оценки качества обученной модели используйте метрики, подходящие вашей задаче. Для задачи классификации - точность (accuracy), полнота (recall), точность предсказаний (precision). Для регрессии – среднеквадратичная ошибка (MSE), средняя абсолютная ошибка (MAE).
Задача | Метрика | Описание |
---|---|---|
Классификация | Точность (accuracy) | Процент верно классифицированных объектов. |
Классификация | Полнота (recall) | Доля верно классифицированных положительных объектов от всех реальных положительных. |
Классификация | Точность предсказаний (precision) | Доля верно классифицированных положительных объектов от всех предсказанных положительных. |
Регрессия | Среднеквадратичная ошибка (MSE) | Среднее значение квадратов разностей между предсказанными и реальными значениями. |
Регрессия | Средняя абсолютная ошибка (MAE) | Среднее значение абсолютных разностей между предсказанными и реальными значениями. |
Например, для задачи предсказания, кто из клиентов совершит покупку, точность предсказания и полнота важны. Если предсказываем цену объекта, используйте MSE и MAE.
Изучите значение выбранных метрик. Сравните их с другими моделями или с базовым уровнем (например, предсказания случайной моделью). Чем выше значение метрики, тем лучше модель. Важно понимать, что оптимальные метрики будут отличаться в зависимости от конкретной задачи. Если вы обнаружите низкие значения метрик, проверьте качество данных (отсутствующие значения, выбросы), подберите более подходящий алгоритм или другие параметры вашей модели.
Предсказание на новых данных
Для предсказания на новых, ранее невиданных данных используйте обученную модель. Представьте, что у вас есть новый набор данных – скажем, 10 новых клиентов с их характеристиками: возраст, доход, стаж работы. Важно, чтобы эти данные имели ровно те же самые столбцы (и в том же порядке!), что и исходный тренировочный набор. Например, если в исходных данных были "Возраст", "Доход", "Стаж", то и в ваших новых данных должны быть такие же столбцы.
Пример: Предположим, что ваша модель предсказывает доход. Используя `predict` метода обученной модели, получим прогнозы для новых данных:
import pandas as pd from sklearn.linear_model import LinearRegression # Предположим, что 'new_data' - это ваш датафрейм с новыми данными. new_data = pd.DataFrame({ 'Возраст': [30, 25, 42], 'Доход': [50000, 45000, 70000], 'Стаж': [5, 3, 10] }) # Используем обученную модель model = LinearRegression() # Предполагается, что модель уже обучена predictions = model.predict(new_data) print(predictions)
Результат – это массив с предсказанными значениями дохода для каждого из новых клиентов.
Важно: при обработке новых данных, точно следуйте тем же шагам предобработки, которые вы использовали с исходными данными. Это гарантирует, что модель получит данные в том же формате, что и те, на которых она была обучена.
Вопрос-ответ:
Можно ли использовать этот метод для предсказания будущих значений, например, спроса на товар?
Конечно, модель, созданная этим способом, может применяться для прогнозирования. После обучения на исторических данных, содержащих информацию о продажах и других факторах, влияющих на спрос, модель сможет предсказывать будущие значения. Важно правильно подготовить данные: выбрать нужные признаки (например, цена, сезонность, рекламные кампании), обработать пропуски и аномалии. Точность прогноза зависит от качества и количества данных, а также от выбранной модели из библиотеки Scikit-learn. Для прогнозирования временных рядов (спроса в зависимости от времени) могут потребоваться дополнительные методы, не использованные в примере, такие как ARIMA или Prophet.
Что делать, если у меня мало данных для обучения модели? Как повлияет это на точность?
С небольшим объемом данных точность модели может быть ниже. Важно оценить качество данных, которые есть. Возможно, стоит сосредоточиться на определённых аспектах информации, выбрать модель машинного обучения, лучше подходящую для небольших датасетов. С небольшим объёмом данных может потребоваться перекрестная проверка (кросс-валидация) для более точной оценки эффективности обучения. Кроме того, можно попробовать различные методы обработки и предварительной подготовки данных, которые могут увеличить качество модели на ограниченном наборе.
Как избежать переобучения модели? Какие параметры в коде на это влияют?
Переобучение происходит, когда модель запоминает особенности обучающего набора данных, а не общие закономерности. Это приводит к хорошим результатам на тренировочных данных, но плохой эффективности на новых, неизвестных данных. В коде некоторые параметры алгоритмов могут приводить к переобучению. Например, выбор сложной модели (с большим количеством параметров) или недостаточная валидация. Важно, используя библиотеки, обращать внимание на такие параметры моделей, как сложность и гибкость. Часто помогает уменьшение сложности модели, использование различных техник регуляризации (например, L1 или L2 регуляризация) или увеличение размера обучающего набора, если это возможно.
Какие библиотеки помимо Pandas и Scikit-learn могут быть полезны для работы с машинным обучением в Colab?
Для работы с машинным обучением в Colab есть множество полезных библиотек помимо Pandas и Scikit-learn. Например, TensorFlow и PyTorch – для глубокого обучения; Seaborn для визуализации данных; NumPy для эффективной работы с массивами чисел. Выбор библиотек зависит от задач моделирования и специфики решаемой проблемы. Если нужно обрабатывать большие объёмы данных, стоит посмотреть в сторону Dask, если предстоит работа с графиками — NetworkX. Выбор дополнительных инструментов определяется конкретной задачей.
Курсы
.png)

.png)

.png)
