模式识别与机器学习(十二):随机森林

原理

随机森林(Random Forest, RF)是Bagging的一个扩展变体。RF在以决策树为基学习器构建Bagging集成的基础上,在决策树的训练过程中引入随机属性选择。训练每颗决策树时随机选出部分特征作为输入,所以该算法被称为随机森林算法。

在RF中,对基决策树的每个结点,先从该结点的属性集合中随机选择一个包含k个属性的子集(假定有d个属性),然后再从这个子集中选择一个最优属性用于划分。参数k控制了随机性的引入程度,一般情况下推荐 k = log ⁡ 2 d \mathrm{k}=\log_{2}\mathrm{d} k=log2d。随机森林的具体形式如下图:

假设训练集 T 的大小为 N ,特征数目为 M ,随机森林的大小为 K ,随机森林算法的具体步骤如下:

1.遍历随机森林的大小 K 次:

(1).从训练集 T 中有放回抽样的方式,取样N 次形成一个新子训练集 D

(2).随机选择 m 个特征,其中 m < M

(3).使用新的训练集 D 和 m 个特征,学习出一个完整的决策树

2.得到随机森林

实现

python 复制代码
from sklearn.model_selection import KFold
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
from sklearn.datasets import load_iris
import numpy as np

# 加载数据
iris = load_iris()
X = iris.data
y = iris.target

# 创建5折交叉验证器
kf = KFold(n_splits=5, random_state=42, shuffle=True)

# 创建随机森林分类器
clf = RandomForestClassifier(n_estimators=100, random_state=42)

# 存储每折的准确率
accuracies = []

# 进行5折交叉验证
for train_index, test_index in kf.split(X):
    X_train, X_test = X[train_index], X[test_index]
    y_train, y_test = y[train_index], y[test_index]

    # 训练模型
    clf.fit(X_train, y_train)

    # 预测测试集
    y_pred = clf.predict(X_test)

    # 计算准确率
    accuracy = accuracy_score(y_test, y_pred)
    accuracies.append(accuracy)

# 计算平均准确率
average_accuracy = np.mean(accuracies)
print(f'Average accuracy: {average_accuracy}')

这段代码首先加载了鸢尾花数据集,并创建了一个5折交叉验证器和一个随机森林分类器。然后,对每一折的数据进行训练和测试,并计算了每一折的准确率。最后,计算了平均准确率。

相关推荐
irislinAmelia11 小时前
缺陷检测AI关键点在哪
人工智能·嵌入式硬件·1024程序员节
Ai-_Man11 小时前
Meta Muse还是不可以导出左侧所有对话,只能点进去单条内容导出,方法不对吗?
开发语言·人工智能·ai·小程序·c#·1024程序员节
安托智造11 小时前
MBD:从二维图纸到三维模型的制造革命(下)
大数据·人工智能·制造·mbd
火山引擎开发者社区11 小时前
VeOps 深度调查:让 AI 排障从“能用”走向“可靠”
人工智能
梓豪csd11 小时前
消息订阅中心:谁该收到哪条通知
java·开发语言·人工智能·低代码·自动化·1024程序员节
王中阳Go11 小时前
两个入口答案不一致先别调模型:6 行入口口径对账表(附脚本)
人工智能·后端·python·大语言模型·1024程序员节
武天旭11 小时前
AI安全--AI大模型的隐私保护与法律法规
人工智能·安全
Solange__12 小时前
影视预演怎么用AI生成3D场景?从分镜、Blockout到镜头交付的完整流程
人工智能·游戏·3d·ai·自然语言处理·aigc·游戏策划
冬奇Lab12 小时前
一次 Skill 评测的复盘:我推翻了一份现成的模型选型结论,然后自己造了个评测平台
人工智能·llm·agent
奇树谦13 小时前
朴素贝叶斯(Naive Bayes)详解
机器学习·1024程序员节