【数学建模学习笔记】机器学习分类:随机森林分类

零基础小白版:随机森林分类超简单讲解

一、什么是随机森林?

简单说,随机森林是一种 "团队作战" 的分类方法。就像做题时,一个人可能犯错,但一群人一起投票,结果往往更准。

这里的 "一群人" 就是多棵 "决策树"(可以理解为一种按规则分类的模型),随机森林通过整合所有决策树的结果,得到最终答案。

二、随机森林为什么 "厉害"?

它的核心是 "随机",体现在两个方面:

  1. 样本随机:每次建决策树时,从原始数据中 "随机抽样本"(有放回,类似抽奖时可重复抽),保证每棵树的训练数据不一样。
  2. 特征随机:每棵树在做分类判断时,只随机选一部分特征(比如判断 "酒的种类",只看 "酒精含量"" 颜色 " 等中的几个),避免某一个特征被过度依赖。

这种随机性让每棵树都有自己的 "想法",最后汇总结果时,错误会相互抵消,所以抗干扰能力强,不容易 "学偏"(过拟合)。

三、随机森林怎么工作?(简单步骤)
  1. 抽样本:从原始数据中随机抽若干样本,给每棵决策树当 "练习题"。
  2. 建树林:每棵树用抽到的样本和随机选的特征,自己学一套分类规则(比如 "酒精含量 > 13 的是琴酒")。
  3. 投票表决:来了新数据,所有树分别判断类别,最后 "少数服从多数",得票最多的就是结果。
四、用红酒数据做例子(附代码实操)

我们用一份红酒数据(包含酒精含量、颜色等特征,以及 "琴酒"" 贝尔摩德 ""雪莉" 三种类别),看看随机森林怎么分类:

  1. 第一步:导入工具和数据

    先加载需要的 Python 库(就像准备好工具箱),再导入红酒数据:

    python 复制代码
    # 导入工具库
    import numpy as np
    import pandas as pd
    from sklearn.ensemble import RandomForestClassifier  # 随机森林工具
    from sklearn.model_selection import train_test_split  # 拆分数据工具
    from sklearn.metrics import accuracy_score  # 计算准确率工具
    
    # 导入红酒数据(在线地址,直接能用)
    df = pd.read_excel('https://labfile.oss.aliyuncs.com/courses/40611/%E7%BA%A2%E9%85%92%E6%95%B0%E6%8D%AE.xlsx')
    df.head()  # 查看前5行数据

    运行后能看到数据长这样(部分):

    酒精 苹果酸 种类
    14.38 3.59 琴酒
    12.45 3.03 贝尔摩德
  2. 第二步:整理数据

    • 把中文列名改成英文(方便代码识别):

      python 复制代码
      # 中文列名转英文
      column_mapping = {
          '酒精': 'Alcohol',
          '苹果酸': 'Malic_Acid',
          '种类': 'Class'  # 其他列名类似转换
      }
      df.rename(columns=column_mapping, inplace=True)
    • 拆分 "特征"(用于分类的依据,比如酒精含量)和 "标签"(要预测的结果,即酒的种类):

      python 复制代码
      X = df.drop('Class', axis=1)  # 特征:除了"种类"之外的所有列
      y = df['Class']  # 标签:只有"种类"这一列
  3. 第三步:拆分训练集和测试集

    就像学生先做练习题(训练集),再做考试卷(测试集):

    python 复制代码
    # 80%数据当训练集,20%当测试集,random_state=42保证结果可重复
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
  4. 第四步:训练随机森林模型

    让模型从训练集中学规律:

    python 复制代码
    # 创建随机森林模型,包含100棵树
    clf = RandomForestClassifier(n_estimators=100, random_state=42)
    
    # 用训练集训练模型
    clf.fit(X_train, y_train)
  5. 第五步:预测并看效果

    用训练好的模型预测测试集,看看准不准:

    python 复制代码
    # 预测测试集的酒种类
    y_pred = clf.predict(X_test)
    
    # 计算准确率
    accuracy = accuracy_score(y_test, y_pred)
    print('准确率:', accuracy)  # 输出:准确率: 0.9722(即97%)

    97% 的准确率意味着,36 个测试样本里,模型猜对了 35 个,效果很好!

五、从图中能看到什么?

我们可以画出 "特征重要性" 图,看看哪些指标对分类最关键:

python 复制代码
import matplotlib.pyplot as plt
import seaborn as sns

# 获取特征重要性数值
feature_importances = clf.feature_importances_
features = X.columns  # 特征名称

# 画条形图
plt.figure(figsize=(10, 6))
sns.barplot(x=feature_importances, y=features)
plt.xlabel('重要性')
plt.ylabel('特征')
plt.show()

运行后会看到,"颜色强度" 和 "类黄酮" 的柱子最高,说明这两个特征最能帮我们区分红酒种类。

相关推荐
硅谷秋水2 小时前
RoboLab:用于分析机器人任务通才策略的高-保真仿真基准
机器学习·计算机视觉·语言模型·机器人
统计学小王子7 小时前
华为杯倒计时5天——《AI使用说明详解》
数学建模
小弥儿9 小时前
GitHub今日热榜 | 2026-09-18:腾讯双项目上榜
学习·开源
湘美书院--湘美谈教育10 小时前
湘美书院AI时代的禅悟集:人机智能,反照诸我
大数据·人工智能·深度学习·机器学习·生活
知识分享小能手11 小时前
深度学习学习教程,从入门到精通,深度生成模型 —— 知识点详解与代码实现(20)
人工智能·深度学习·学习
m4Rk_12 小时前
【论文阅读】Agent 记忆机制(74):CompassMem——从相似度检索走向事件图上的记忆导航
论文阅读·人工智能·学习·开源·github
小李不想当小白12 小时前
DMA直接存储器存取(STM32标准库学习笔记)
笔记·stm32·单片机·嵌入式硬件·学习·分享
雾屿_Mistisle13 小时前
模型窃取与隐私泄露(二)模型反演与模型提取
机器学习·数据分析
2601_9499506314 小时前
练题簿在线练题全流程:从资料导入到模拟考试与错题复盘
学习·考研·小程序·刷题·小程序推荐
别动我齐刘海14 小时前
ROS2 Jazzy + C++ 实战路线——基础学习2
c++·人工智能·vscode·python·学习·机器学习·机器人