Рубрики
Без рубрики

Случайная регрессия лесов: полная ссылка

Добро пожаловать в эту статью о случайной лесной регрессии. Позвольте мне быстро идти по смыслу регрессии.

Автор оригинала: Pankaj Kumar.

Случайная регрессия лесов: полная ссылка

Добро пожаловать в эту статью о случайной лесной регрессии. Позвольте мне быстро идти по смыслу регрессии.

Оглавление

  • Что такое регрессия в изучении машины?
  • Что такое случайная регрессия лесов?
  • Шаги для выполнения случайной регрессии леса
  • Реализация случайной регрессии лесов в Python
    • 1. Импорт набора данных
    • 2. Предварительная обработка данных
    • 3. Установка случайной регрессии лесов к набору данных
    • 4. Визуализация результата
    • 5. Интерпретация вышеуказанного графика
    • 6. Восстановление модели на 100 деревьев
    • 7. Создание графика на 100 деревьев
    • 8. Восстановление модели на 300 деревьев
    • 9. График для 300 деревьев
  • Полный код Python для реализации случайной регрессии леса
  • Заключение

Что такое регрессия в изучении машины?

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

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

Что такое случайная регрессия лесов?

Случайная регрессия лесов – это метод обучения ансамбля. Но что такое обучение ансамбля?

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

Прогноз на основе деревьев более точнее, потому что он учитывает много прогнозов. Это связано с использованием среднего значения. Эти алгоритмы более стабильны, потому что любые изменения в наборе данных могут повлиять на одно дерево, но не лес деревьев.

Шаги для выполнения случайной регрессии леса

Это процесс четырех шагов, и наши шаги следующие:

  1. Выберите случайные точки данных K от набора тренировок.
  2. Создайте дерево решений, связанные с этими k точек данных.
  3. Выберите номер n деревьев деревьев, которые вы хотите создать и повторять шаги 1 и 2.
  4. Для новой точки данных сделать каждый из ваших деревьев NTREE предсказать значение y для точки данных в вопросе, и назначить новую точку данных в среднем по всем предсказанным значениям y.

Реализация случайной регрессии лесов в Python

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

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

Используемый набор данных можно найти в https://github.com/content-anu/dataSet-polynomial-Regression

1. Импорт набора данных

Мы будем использовать Numpy, Pandas и библиотеки MATPLOTLIB для реализации нашей модели.

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

dataset = pd.read_csv('Position_Salaries.csv')
dataset.head()

Снимок набора данных выглядит следующим образом:

Изображение 69.

2. Предварительная обработка данных

У нас не будет много данных для предварительной обработки данных. Нам просто нужно будет определить матрицу функций и векторизованного массива.

X = dataset.iloc[:,1:2].values
y = dataset.iloc[:,2].values

3. Установка случайной регрессии лесов к набору данных

Мы импортируем RankyForestregressor из ансамбльской библиотеки Sklearn. Мы создаем объект регресса с использованием конструктора класса RFR. Параметры включают в себя:

  1. n_eStimators: количество деревьев в лесу.)
  2. Критерий: по умолчанию – MSE IE означает ошибку в квадрате. Это была также часть дерева решений.
  3. Random_State.
from sklearn.ensemble import RandomForestRegressor
regressor = RandomForestRegressor(n_estimators = 10, random_state = 0)
regressor.fit(X,y)

Линия регресса выглядит следующим образом:

Изображение 70.

Мы просто сделаем прогноз теста следующим образом:

y_pred=regressor.predict([[6.5]])
y_pred
Изображение 71.

4. Визуализация результата

#higher resolution graph
X_grid = np.arange(min(X),max(X),0.01)
X_grid = X_grid.reshape(len(X_grid),1) 

plt.scatter(X,y, color='red') #plotting real points
plt.plot(X_grid, regressor.predict(X_grid),color='blue') #plotting for predict points

plt.title("Truth or Bluff(Random Forest - Smooth)")
plt.xlabel('Position level')
plt.ylabel('Salary')
plt.show()

Произведенная графика, как показано ниже:

Изображение 72.

5. Интерпретация вышеуказанного графика

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

Каждый прогноз основан на 10 голосов (мы предприняли 10 деревьев решений). Случайный лес рассчитывает много средних для каждого из этих интервалов.

Чем больше деревьев мы включаем, больше – это точность, потому что многие деревья сходятся к тому же среднему среднему.

6. Восстановление модели на 100 деревьев

from sklearn.ensemble import RandomForestRegressor
regressor = RandomForestRegressor(n_estimators = 100, random_state = 0)
regressor.fit(X,y)

Уравнение регресса, сформированное для вышеуказанных 100 деревьев, заключается в следующем:

Изображение 73.

7. Создание графика на 100 деревьев

#higher resolution graph
X_grid = np.arange(min(X),max(X),0.01)
X_grid = X_grid.reshape(len(X_grid),1) 
plt.scatter(X,y, color='red') 

plt.plot(X_grid, regressor.predict(X_grid),color='blue') 
plt.title("Truth or Bluff(Random Forest - Smooth)")
plt.xlabel('Position level')
plt.ylabel('Salary')
plt.show()
Изображение 77.

Шаги графика не увеличиваются в 10 раз как количество деревьев в лесу. Но прогноз будет лучше. Давайте предскащим результат того же переменной.

y_pred=regressor.predict([[6.5]])
y_pred
Изображение 75.

8. Восстановление модели на 300 деревьев

from sklearn.ensemble import RandomForestRegressor
regressor = RandomForestRegressor(n_estimators = 300, random_state = 0)
regressor.fit(X,y)

Выход для вышеуказанного кодового фрагмента создает следующий регресс:

Изображение 76.

9. График для 300 деревьев

#higher resolution graph
X_grid = np.arange(min(X),max(X),0.01)
X_grid = X_grid.reshape(len(X_grid),1) 

plt.scatter(X,y, color='red') #plotting real points
plt.plot(X_grid, regressor.predict(X_grid),color='blue') #plotting for predict points

plt.title("Truth or Bluff(Random Forest - Smooth)")
plt.xlabel('Position level')
plt.ylabel('Salary')
plt.show()

Приведенный выше код производит следующий график:

Изображение 77.

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

y_pred=regressor.predict([[6.5]])
y_pred

Выход для вышеуказанного кода выглядит следующим образом:

Изображение 78.

Полный код Python для реализации случайной регрессии леса

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
 
dataset = pd.read_csv('Position_Salaries.csv')
dataset.head()

X = dataset.iloc[:,1:2].values
y = dataset.iloc[:,2].values

# for 10 trees
from sklearn.ensemble import RandomForestRegressor
regressor = RandomForestRegressor(n_estimators = 10, random_state = 0)
regressor.fit(X,y)

y_pred=regressor.predict([[6.5]])
y_pred

#higher resolution graph
X_grid = np.arange(min(X),max(X),0.01)
X_grid = X_grid.reshape(len(X_grid),1) 
 
plt.scatter(X,y, color='red') #plotting real points
plt.plot(X_grid, regressor.predict(X_grid),color='blue') #plotting for predict points
 
plt.title("Truth or Bluff(Random Forest - Smooth)")
plt.xlabel('Position level')
plt.ylabel('Salary')
plt.show()


# for 100 trees
from sklearn.ensemble import RandomForestRegressor
regressor = RandomForestRegressor(n_estimators = 100, random_state = 0)
regressor.fit(X,y)

#higher resolution graph
X_grid = np.arange(min(X),max(X),0.01)
X_grid = X_grid.reshape(len(X_grid),1) 
plt.scatter(X,y, color='red') 
 
plt.plot(X_grid, regressor.predict(X_grid),color='blue') 
plt.title("Truth or Bluff(Random Forest - Smooth)")
plt.xlabel('Position level')
plt.ylabel('Salary')
plt.show()

y_pred=regressor.predict([[6.5]])
y_pred

# for 300 trees
from sklearn.ensemble import RandomForestRegressor
regressor = RandomForestRegressor(n_estimators = 300, random_state = 0)
regressor.fit(X,y)

#higher resolution graph
X_grid = np.arange(min(X),max(X),0.01)
X_grid = X_grid.reshape(len(X_grid),1) 
 
plt.scatter(X,y, color='red') #plotting real points
plt.plot(X_grid, regressor.predict(X_grid),color='blue') #plotting for predict points
 
plt.title("Truth or Bluff(Random Forest - Smooth)")
plt.xlabel('Position level')
plt.ylabel('Salary')
plt.show()

y_pred=regressor.predict([[6.5]])
y_pred

Выход вышеуказанного кода будет графики и значения прогнозирования. Ниже приведены графики:

Изображение 79.

Заключение

Как вы наблюдали, модель 10 деревьев предсказала зарплату за 6,5 лет опыта, чтобы быть 167 000 человек. Модель 100 деревьев предсказала 158 300, а модель 300 деревьев предсказала 160,333,33. Следовательно, больше количество деревьев, тем точнее наш результат.