分类算法 - 随机森林


介绍

随机森林是一种监督学习算法,可用于分类和回归。但是,它主要用于分类问题。众所周知,森林是由树木组成的,树木越多,森林就越茂盛。同样,随机森林算法在数据样本上创建决策树,然后对每个决策树进行预测,最后通过投票的方式选择最佳解决方案。它是一种比单个决策树更好的集成方法,因为它通过对结果进行平均来减少过度拟合。

随机森林算法的工作原理

我们可以借助以下步骤了解随机森林算法的工作原理 -

  • 步骤 1 - 首先,从给定数据集中选择随机样本开始。

  • 步骤 2 - 接下来,该算法将为每个样本构建决策树。然后它会得到每棵决策树的预测结果。

  • 步骤 3 - 在此步骤中,将对每个预测结果进行投票。

  • Step 4 - 最后,选择得票最多的预测结果作为最终的预测结果。

下图将说明其工作原理 -

测试装置

Python 中的实现

首先,从导入必要的 Python 包开始 -

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

接下来,从其网页链接下载 iris 数据集,如下所示 -

path = "https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data"

接下来,我们需要为数据集指定列名称,如下所示 -

headernames = ['sepal-length', 'sepal-width', 'petal-length', 'petal-width', 'Class']

现在,我们需要将数据集读取到 pandas 数据框,如下所示 -

dataset = pd.read_csv(path, names=headernames)
dataset.head()
萼片长度 萼片宽度 花瓣长度 花瓣宽度 班级
0 5.1 3.5 1.4 0.2 鸢尾
1 4.9 3.0 1.4 0.2 鸢尾
2 4.7 3.2 1.3 0.2 鸢尾
3 4.6 3.1 1.5 0.2 鸢尾
4 5.0 3.6 1.4 0.2 鸢尾

数据预处理将在以下脚本行的帮助下完成 -

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

接下来,我们将数据分为训练集和测试集。以下代码将数据集分为 70% 的训练数据和 30% 的测试数据 -

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.30)

接下来,在 sklearn 的 RandomForestClassifier 类的帮助下训练模型,如下所示 -

from sklearn.ensemble import RandomForestClassifier
classifier = RandomForestClassifier(n_estimators=50)
classifier.fit(X_train, y_train)

最后,我们需要做出预测。可以借助以下脚本来完成 -

y_pred = classifier.predict(X_test)

接下来,打印结果如下 -

from sklearn.metrics import classification_report, confusion_matrix, accuracy_score
result = confusion_matrix(y_test, y_pred)
print("Confusion Matrix:")
print(result)
result1 = classification_report(y_test, y_pred)
print("Classification Report:",)
print (result1)
result2 = accuracy_score(y_test,y_pred)
print("Accuracy:",result2)

输出

Confusion Matrix:
[
   [14 0 0]
   [ 0 18 1]
   [ 0 0 12]
]
Classification Report:
               precision       recall     f1-score       support
Iris-setosa        1.00         1.00        1.00         14
Iris-versicolor    1.00         0.95        0.97         19
Iris-virginica     0.92         1.00        0.96         12
micro avg          0.98         0.98        0.98         45
macro avg          0.97         0.98        0.98         45
weighted avg       0.98         0.98        0.98         45

Accuracy: 0.9777777777777777

随机森林的优点和缺点

优点

以下是随机森林算法的优点 -

  • 它通过平均或组合不同决策树的结果来克服过度拟合的问题。

  • 随机森林比单个决策树更适合处理大范围的数据项。

  • 随机森林的方差比单一决策树小。

  • 随机森林非常灵活并且具有非常高的准确性。

  • 随机森林算法不需要数据缩放。即使在没有缩放的情况下提供数据后,它也能保持良好的准确性。

  • 随机森林算法不需要数据缩放。即使在没有缩放的情况下提供数据后,它也能保持良好的准确性。

缺点

以下是随机森林算法的缺点 -

  • 复杂性是随机森林算法的主要缺点。

  • 随机森林的构建比决策树更加困难和耗时。

  • 实现随机森林算法需要更多的计算资源。

  • 当我们有大量决策树时,它就不那么直观了。

  • 与其他算法相比,使用随机森林的预测过程非常耗时。