Random Forest (Случайный лес) — это управляемый ансамблем алгоритм машинного обучения, состоящий из деревьев решений. Он также используется для классификации и регрессии. В Random Forest набор данных разделен на две части (обучающая и тестирующая). На основе нескольких параметров принимается решение, и целевые данные прогнозируются или классифицируются соответствующим образом.
Случайный лес представляет собой набор нескольких деревьев решений, а конечный результат основан на агрегированном результате всех деревьев решений.
Чтобы лучше понять случайный лес, давайте возьмем пример набора данных Iris. Набор данных Iris по умолчанию присутствует в библиотеке scikit-learn Python.
Информация об атрибутах набора данных:
- sepal length in cm
- sepal width in cm
- petal length in cm
- petal width in cm
- class:
- Iris Setosa
- Iris Versicolour
- Iris Virginica
Поэтапная реализация
Шаг 1:
Загрузка набора данных Iris из научной библиотеки Python.
Scikit-learn Scikit-learn (Sklearn) — самая полезная, надежная и бесплатная библиотека машинного обучения на Python. Это эффективный инструмент для машинного обучения и статистического моделирования, который включает в себя различные алгоритмы, такие как классификация, регрессия, кластеризация, случайные леса, k-соседей и уменьшение размерности.
Python3
# Import scikit-learn dataset library
from
sklearn
import
datasets
# Load dataset
iris
=
datasets.load_iris()
Шаг 2:
Распечатайте зависимые и независимые переменные набора данных радужной оболочки и соответствующим образом сгруппируйте их.
Зависимые переменные: переменные, значение которых зависит от других атрибутов таблицы.
Независимые переменные: переменные, значение которых не зависит от других атрибутов таблицы.
Python3
# print the label species(setosa ,
# versicolor , virginica )
(iris.target_names)
# print the names of the four features
(iris.features_names)
Выход:
Шаг 3:
Выведите 5 первых записей и переименуйте значения setosa, versicolor, viriginica как 0,1,2 для лучшего предсказания модели.
Python3
# print the iris data(top 5 records)
(iris.data[
0
:
5
])
# print the iris labels ( 0:setosa ,
# 1:versicolor , 2:viriginica)
(iris.target)
Выход:
Шаг 4:
Импортируйте библиотеку pandas из python для создания фрейма данных набора данных iris. Панды используются для очистки и анализа данных. Он построен на основе библиотеки Numpy, которая используется для построения различных структур данных и операций для манипулирования числовыми данными и временными рядами.
Python3
# Creating a Dataframe of given iris dataset.
import
pandas as pd
data
=
pd.DataFrame({
'sepal length'
: iris.data[:,
0
],
'sepal width'
: iris.data[:,
1
],
'petal length'
: iris.data[:,
2
],
'petal width'
: iris.data[:,
3
],
'species'
: iris.target
})
data.head()
Выход:
Шаг 5:
Разделение набора данных на две части — обучение и тестирование. Набор обучающих данных используется для обучения модели, а набор тестовых данных используется для проверки того, дает ли модель точные прогнозы. Для выполнения этой операции из библиотеки sklearn.model_selection импортируется пакет train_test_split.
Python3
# Import train_test_split function
from
sklearn.model_selection
import
train_test_split
X
=
data[[
'sepal length'
,
'sepal width'
,
'petal length'
,
'petal width'
]]
# Features
y
=
data[
'species'
]
# Labels
# Split dataset into training set and test set
X_train, X_test, y_train, y_test
=
train_test_split(
X, y, test_size
=
0.3
)
# 70% training and 30% test
Шаг 6:
Теперь, после разделения набора данных, применяется алгоритм случайного леса. Для этого пакет RandomForestClassifier импортируется из библиотеки sklearn.ensemble, а X_train (обучающая часть зависимой переменной) и y_train (обучающая часть независимой переменной) подгоняются к созданной модели. Модель используется для прогнозирования y_pred (независимая переменная) с помощью X_test (тестовая часть зависимой переменной).
Python3
# Import Random Forest Model
from
sklearn.ensemble
import
RandomForestClassifier
# Create a Gaussian Classifier
clf
=
RandomForestClassifier(n_estimator
=
100
)
# Train the model using the training sets
# y_pred = clf.predict(X_test)
clf.fit(X_train, y_train)
y_pred
=
clf.predict(X_test)
Шаг 7:
Чтобы проверить точность модели, нам нужно импортировать пакет метрик из библиотеки sklearn, а другой способ рассчитать точность модели — создать матрицу путаницы.
Python3
# Import scikit-learn metrics
# module for accuracy calculation
from
sklearn
import
metrics
# Number of right values predicted right
# and wrong values predicted wrong
confusion_matrix
=
metrics.confusion_matrix(y_test, y_pred)
(confusion_matrix)
# Model Accuracy how often is the
# classifier correct ?
(
"Accuracy : "
, metrics.accuracy_score(y_test, y_pred)
Выход: