news 2026/10/23 4:43:54

《随机森林》

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
《随机森林》

随机森林:
随机森林就是训练很多棵不同的决策树,然后让它们投票决定最终结果。
从何而来:
决策树很强大,但有一个致命缺点:容易过拟合。一棵树如果长得太深,就会把噪声也学进去。

为了克服这个缺点,人们想了一个办法:

训练很多棵树

每棵树用的数据略有不同

每棵树用不同的特征子集

这样,单棵树可能会犯错,但整个森林的投票结果会更稳定、更准确。

代码:
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from collections import Counter

================= 1. 准备数据 =================

加载鸢尾花数据集

iris = load_iris()
X = iris.data
y = iris.target

划分训练集和测试集

X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.3, random_state=42
)

================= 2. 训练随机森林 =================

创建包含 100 棵树的随机森林

forest_model = RandomForestClassifier(
n_estimators=100, # 100棵树
max_depth=5,
random_state=42
)

训练模型

forest_model.fit(X_train, y_train)

预测并评估准确率

forest_pred = forest_model.predict(X_test)
forest_acc = accuracy_score(y_test, forest_pred)
print(f"随机森林在测试集上的准确率:{forest_acc:.3f}\n")

================= 3. 画出特征重要性 =================

importances = forest_model.feature_importances_

plt.figure(figsize=(8, 5))
plt.barh(iris.feature_names, importances)
plt.xlabel(‘特征重要性’)
plt.title(‘随机森林:哪些特征更重要’)
plt.grid(True)
plt.show()

================= 4. 终极透视:100棵树的投票过程 =================

1. 挑出测试集的第 1 个样本(一朵花)

sample_index = 0
single_X = X_test[sample_index].reshape(1, -1) # 取出这 1 朵花
true_label = y_test[sample_index] # 它的真实品种

2. 【核心大招】让森林里的 100 棵树,各自对这朵花进行预测!

estimators_ 里面才真正装着那 100 棵独立的树

all_votes = [tree.predict(single_X)[0] for tree in forest_model.estimators_]

3. 统计这 100 棵树的票数

vote_counts = Counter(int(v) for v in all_votes)

print(f"真实品种: {iris.target_names[true_label]}“)
print(f"100棵树的投票明细: {dict(vote_counts)}”)

4. 找出得票最多的冠军

winner = vote_counts.most_common(1)[0][0]
print(f"最终获胜结果: {iris.target_names[winner]}")

5. 看看有没有“叛徒”(投错票的树)

wrong_votes = sum(1 for v in all_votes if v != winner)
print(f"100棵树中有 {wrong_votes} 棵树投了反对票(叛徒)!")

随机森林:分类:判断客户会不会流失、图片属于哪一类
回归:预测房价、销量。
它的优点:准确率高、不容易过拟合、能处理大量特征、能评估特征重要性

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/23 4:43:09

ModernWMS|免费开源仓库管理系统,从部署到上手只要几分钟

ModernWMS|免费开源仓库管理系统,从部署到上手只要几分钟 【免费下载链接】ModernWMS The open source simple and complete warehouse management system is derived from our many years of experience in implementing erp projects. We stripped the…

作者头像 李华
网站建设 2026/10/23 4:36:27

Rufus 制作 Win11 安装盘教程:3 步绕过 TPM 2.0

Rufus 制作 Win11 安装盘教程:3 步绕过 TPM 2.0 【免费下载链接】rufus The Reliable USB Formatting Utility 项目地址: https://gitcode.com/GitHub_Trending/ru/rufus Rufus 是一款单文件绿色 U 盘格式化工具,最大本事是把 Windows 11 安装器里…

作者头像 李华
网站建设 2026/10/23 4:33:45

Windows 11 WSL2 安装配置与性能排障实战

Windows 11 上装 Linux 子系统这件事,我在不同机器上大概做过十几次:有厂商预装系统塞满全家桶的开发本,有自己装的纯净系统,也有常年不关机的小主机。同样是敲一句wsl --install,有的机器三分钟就进到 Ubuntu 的命令行…

作者头像 李华
网站建设 2026/10/23 4:33:15

5步终极优化:PCL2启动器内存设置完全指南,告别Minecraft卡顿

5步终极优化:PCL2启动器内存设置完全指南,告别Minecraft卡顿 Plain Craft Launcher 2(简称PCL2)是一款广受好评的Minecraft启动器,其内置的内存优化功能能显著提升游戏性能,特别是对于配置有限的电脑用户。…

作者头像 李华
网站建设 2026/10/23 4:31:14

VRCX:免费深度管好 VRChat 好友关系

VRCX:免费深度管好 VRChat 好友关系 【免费下载链接】VRCX Friendship management tool for VRChat 项目地址: https://gitcode.com/GitHub_Trending/vr/VRCX 你把好友列表翻到第 40 行,第 12 个名字看着眼熟,却想不起来上个月他还顶着…

作者头像 李华