Привет, коллеги! 👋 Сегодня разберем, как обучить модель "Случайный лес" (Random Forest🌲) для классификации. Этот алгоритм отлично подходит для задач, где нужно учесть множество факторов и избежать переобучения. Давайте посмотрим на пример кода и разберем каждый этап!
1. Подготовка данных 📊
import pandas as pd
df = pd.read_csv('vehicles_dataset_prepared.csv')
df_prepared = df.copy()
➖Импорт данных: Загружаем данные из CSV-файла vehicles_dataset_prepared.csv с помощью библиотеки pandas.
➖Копирование датафрейма: Создаем копию данных, чтобы исходный датафрейм остался неизменным.
2. Разделение на признаки и целевую переменную 🎯
x = df_prepared.drop(['price_category'], axis=1)
y = df_prepared.price_category
➖Признаки (X): Удаляем столбец price_category (целевая переменная) из данных. Все остальные колонки — это признаки, на основе которых модель будет делать предсказания.
➖Целевая переменная (Y): Это именно то, что мы хотим предсказать — категория цены.
3. Разделение данных на тренировочные и тестовые 🧩
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3, random_state=42)
➖train_test_split: Разбиваем данные на две части:
70% — тренировочные данные (x_train, y_train),
30% — тестовые данные (x_test, y_test).
➖random_state=42: Фиксируем "случайность" для воспроизводимости результатов.
4. Обучение модели "Случайный лес" 🌳🌳🌳
from sklearn.ensemble import RandomForestClassifier
rf_clf = RandomForestClassifier()
rf_clf.fit(x_train, y_train)
➖RandomForestClassifier: Создаем классификатор. По умолчанию используется 100 деревьев.
➖fit(): Модель обучается на тренировочных данных, анализируя взаимосвязи между признаками и целевой переменной.
5. Предсказания и оценка точности 📈
from sklearn.metrics import accuracy_score
predicted_train_rf = rf_clf.predict(x_train)
predicted_test_rf = rf_clf.predict(x_test)
print(accuracy_score(y_train, predicted_train_rf)) # Точность на тренировочных данных
print(accuracy_score(y_test, predicted_test_rf)) # Точность на тестовых данных
➖predict(): Модель делает предсказания для тренировочных и тестовых данных.
➖accuracy_score(): Считает долю правильных ответов. Например, если accuracy = 0.95, модель верно предсказала 95% случаев.
💡 Что важно заметить?
➖Если точность на тренировочных данных близка к 1 (например, 0.99), а на тестовых — значительно ниже, это признак переобучения*️⃣.
➖Случайный лес автоматически "усредняет" результаты множества деревьев, что снижает риск переобучения по сравнению с одним деревом.
*️⃣Признак переобучения — это когда модель демонстрирует почти идеальную точность на тренировочных данных (например, 99%), но значительно хуже работает на новых данных (например, 70% на тестовой выборке). Это происходит из-за того, что модель «запоминает» шумы и детали тренировочного набора вместо выявления общих закономерностей. 🌳➡️📉
⭐️Дальше обсудим как найти правильные параметры для модели
#МашинноеОбучение #DataScience #СлучайныйЛес #Переобучение #Классификация #ML
