- 使用 Python 进行机器学习
- 家
- 基本
- Python生态系统
- 机器学习方法
- ML 项目的数据加载
- 通过统计了解数据
- 通过可视化了解数据
- 准备数据
- 数据特征选择
- 机器学习算法 - 分类
- 介绍
- 逻辑回归
- 支持向量机(SVM)
- 决策树
- 朴素贝叶斯
- 随机森林
- 机器学习算法 - 回归
- 随机森林
- 线性回归
- 机器学习算法 - 聚类
- 概述
- K均值算法
- 均值平移算法
- 层次聚类
- ML 算法 - KNN 算法
- 寻找最近的邻居
- 性能指标
- 自动工作流程
- 提高机器学习模型的性能
- 提高 ML 模型的性能(续……)
- 使用 Python 进行机器学习 - 资源
- 使用 Python 进行机器学习 - 快速指南
- 使用 Python 进行机器学习 - 资源
- 使用 Python 进行机器学习 - 讨论
分类算法 - 随机森林
介绍
随机森林是一种监督学习算法,可用于分类和回归。但是,它主要用于分类问题。众所周知,森林是由树木组成的,树木越多,森林就越茂盛。同样,随机森林算法在数据样本上创建决策树,然后对每个决策树进行预测,最后通过投票的方式选择最佳解决方案。它是一种比单个决策树更好的集成方法,因为它通过对结果进行平均来减少过度拟合。
随机森林算法的工作原理
我们可以借助以下步骤了解随机森林算法的工作原理 -
步骤 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
随机森林的优点和缺点
优点
以下是随机森林算法的优点 -
它通过平均或组合不同决策树的结果来克服过度拟合的问题。
随机森林比单个决策树更适合处理大范围的数据项。
随机森林的方差比单一决策树小。
随机森林非常灵活并且具有非常高的准确性。
随机森林算法不需要数据缩放。即使在没有缩放的情况下提供数据后,它也能保持良好的准确性。
随机森林算法不需要数据缩放。即使在没有缩放的情况下提供数据后,它也能保持良好的准确性。
缺点
以下是随机森林算法的缺点 -
复杂性是随机森林算法的主要缺点。
随机森林的构建比决策树更加困难和耗时。
实现随机森林算法需要更多的计算资源。
当我们有大量决策树时,它就不那么直观了。
与其他算法相比,使用随机森林的预测过程非常耗时。