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

Во-первых, давайте начнем с импорта необходимых библиотек:

import pandas as pd
import numpy as np
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_squared_error, r2_score
from sklearn.model_selection import train_test_split

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

url = 'https://raw.githubusercontent.com/scikit-learn/scikit-learn/master/sklearn/datasets/data/boston_house_prices.csv'
data = pd.read_csv(url)

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

X = data.drop('MEDV', axis=1)
y = data['MEDV']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

(MEDV – это столбец в наборе данных Boston Housing, который содержит медианную стоимость домов, занимаемых владельцами, в тысячах долларов США. Это целевая переменная, которую мы пытаемся предсказать, используя функции, представленные в наборе данных)

В приведенном выше коде мы разбиваем набор данных на наборы для обучения и тестирования, используя функцию train_test_split из scikit-learn. Мы используем 70% данных для обучения и 30% для тестирования. Мы также устанавливаем случайное состояние на 42, чтобы обеспечить воспроизводимость наших результатов.

Теперь давайте создадим нашу модель регрессии случайного леса.

rf_model = RandomForestRegressor(n_estimators=100, random_state=42)
rf_model.fit(X_train, y_train)

( Параметр n_estimators управляет количеством деревьев, которые будут использоваться в случайном лесу. Увеличение количества деревьев в модели может повысить точность и надежность, но также увеличивает вычислительные затраты на обучение и прогнозирование. )

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

Давайте теперь сделаем прогнозы, используя нашу модель.

y_pred = rf_model.predict(X_test)

В приведенном выше коде мы используем нашу модель для прогнозирования данных тестирования.

Наконец, давайте оценим производительность нашей модели.

mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)
print('Mean Squared Error:', mse)
print('R-squared:', r2)

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