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

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

一、什么是随机森林?

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

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

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

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

  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()

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

相关推荐
wheeldown3 小时前
【数学建模】数据预处理入门:从理论到动手操作
python·数学建模·matlab·python3.11
玉木子3 小时前
机器学习(七)决策树-分类
决策树·机器学习·分类
悠哉悠哉愿意3 小时前
【数学建模学习笔记】机器学习分类:KNN分类
学习·机器学习·数学建模
ningmengjing_3 小时前
理解损失函数:机器学习的指南针与裁判
人工智能·深度学习·机器学习
四谎真好看3 小时前
Java 学习笔记(进阶篇2)
java·笔记·学习
程序猿炎义3 小时前
【NVIDIA AIQ】自定义函数实践
人工智能·python·学习
小陈phd4 小时前
高级RAG策略学习(四)——上下文窗口增强检索RAG
人工智能·学习·langchain
nju_spy4 小时前
Kaggle - LLM Science Exam 大模型做科学选择题
人工智能·机器学习·大模型·rag·南京大学·gpu分布计算·wikipedia 维基百科
中國龍在廣州4 小时前
GPT-5冷酷操盘,游戏狼人杀一战封神!七大LLM狂飙演技,人类玩家看完沉默
人工智能·gpt·深度学习·机器学习·计算机视觉·机器人