机器学习_10、集成学习-随机森林

随机森林算法

随机森林(Random Forest)是一种集成学习方法,特别用于分类、回归和其他任务,它通过构建多个决策树(Decision Trees)在训练时进行预测,并采用平均或多数投票的方式来提高整体模型的准确性和鲁棒性。随机森林是由Leo Breiman和Adele Cutler提出的,它结合了Bagging(Bootstrap Aggregating)的思想和随机特征选择来构建决策树的集合。

工作原理

随机森林的工作过程可以概括为以下几个步骤:

  1. 自助采样(Bootstrap sampling):从原始数据集中使用有放回的抽样方式随机选择N个样本,形成一个训练集。这个过程重复进行多次,每次生成的训练集都用来构建一个新的决策树。

  2. 随机选择特征:在构建决策树的每个分裂节点时,不是查看所有特征来选择最佳分裂特征,而是随机选择一部分特征候选集,并从中选择最佳分裂特征。这一步增加了模型的随机性,有助于提高模型的泛化能力。

  3. 构建决策树:对于每个训练集,构建一个决策树。决策树在训练过程中不进行剪枝,允许它们尽可能地生长到最大深度。

  4. 汇总结果

    • 对于分类任务,随机森林通过多数投票的方式确定最终的类别输出。
    • 对于回归任务,随机森林将所有决策树的预测结果取平均值作为最终的预测输出。

特点和优势

  • 准确性高:通过集成多个决策树,随机森林通常能够达到很高的准确率,并且相比单个决策树,它更不容易过拟合。
  • 鲁棒性强:随机森林能够处理大量数据集,即使数据具有高维特征并且存在少量的缺失数据也能很好地工作。
  • 变量重要性评估:随机森林能够提供关于特征重要性的估计,这对于理解数据集中哪些特征对预测变量贡献最大非常有用。
  • 适用范围广:随机森林可以用于分类和回归任务,也被用于异常点检测等其他机器学习任务中。

应用场景

随机森林因其出色的准确性、鲁棒性和易用性,在各种领域得到了广泛的应用,包括但不限于:

  • 医疗诊断

  • 金融风险评估

  • 股票市场分析

  • 客户行为预测

  • 图像分类和识别

  • 生物信息学和基因分类

    #coding=utf-8
    #RandomForestClassifier.py
    import numpy as np
    import pandas as pd
    from sklearn.model_selection import train_test_split
    from sklearn.ensemble import RandomForestClassifier

    加载数据

    filename="./glass.data"
    glass_data = pd.read_csv(filename,index_col=0,header=None)

    先从DataFrame中取出数组值(.value),只是为了方便后面显示

    X,y = glass_data.iloc[:,:-1].values, glass_data.iloc[:,-1].values
    #X,y = glass_data.iloc[:,:-1], glass_data.iloc[:,-1]

    划分训练集与测试集

    X_train, X_test, y_train, y_test = train_test_split(
    X, y, shuffle=True, stratify=y, random_state=1)

    建立模型

    rfc = RandomForestClassifier(max_depth=4,bootstrap=True,
    random_state=0)
    rfc.fit(X_train, y_train)
    print("训练集准确率:",rfc.score(X_train,y_train))
    print("测试集准确率:",rfc.score(X_test,y_test))
    print("测试集前2个样本的预测分类标签:",rfc.predict(X_test[:2]))
    print("测试集前2个样本的真实分类标签:",y_test[:2])
    print("测试集前2个样本所属标签概率的预测值:\n",
    rfc.predict_proba(X_test[:2]),sep="")

相关推荐
AI军哥5 小时前
MySQL8的安装方法
人工智能·mysql·yolo·机器学习·deepseek
余弦的倒数5 小时前
知识蒸馏和迁移学习的区别
人工智能·机器学习·迁移学习
Allen Bright5 小时前
【机器学习-线性回归-2】理解线性回归中的连续值与离散值
人工智能·机器学习·线性回归
weixin_贾5 小时前
最新AI-Python机器学习与深度学习技术在植被参数反演中的核心技术应用
python·机器学习·植被参数·遥感反演
硅谷秋水6 小时前
GAIA-2:用于自动驾驶的可控多视图生成世界模型
人工智能·机器学习·自动驾驶
深度之眼6 小时前
2025时间序列都有哪些创新点可做——总结篇
人工智能·深度学习·机器学习·时间序列
Olafur_zbj9 小时前
【EDA】EDA中聚类(Clustering)和划分(Partitioning)
机器学习·数据挖掘·聚类
sduwcgg10 小时前
kaggle配置
人工智能·python·机器学习
88号技师12 小时前
【1区SCI】Fusion entropy融合熵,多尺度,复合多尺度、时移多尺度、层次 + 故障识别、诊断-matlab代码
开发语言·机器学习·matlab·时序分析·故障诊断·信息熵·特征提取
硅谷秋水13 小时前
通过模仿学习实现机器人灵巧操作:综述(上)
人工智能·深度学习·机器学习·计算机视觉·语言模型·机器人