目录

  • 1. 作者介绍
  • 2. 关于理论方面的知识介绍
  • 随机森林
  • 3. 实验过程
    • 3.1 数据集介绍
    • 3.2 实验代码
    • 3.3 运行结果
    • 3.3 实验总结
  • 参考

1. 作者介绍

李佳敏,女,西安工程大学电子信息学院,2021级研究生
研究方向:模式识别与人工智能
电子邮件:2429154859@qq.com

吴燕子,女,西安工程大学电子信息学院,2021级研究生,张宏伟人工智能课题组
研究方向:模式识别与人工智能
电子邮件:1219428323@qq.com

2. 关于理论方面的知识介绍

随机森林

随机森林实际上是一种特殊的bagging方法,它将决策树用作bagging中的模型。首先,用bootstrap方法生成m个训练集,然后,对于每个训练集,构造一颗决策树,在节点找特征进行分裂的时候,并不是对所有特征找到能使得指标(如信息增益)最大的,而是在特征中随机抽取一部分特征,在抽到的特征中间找到最优解,应用于节点,进行分裂。随机森林的方法由于有了bagging,也就是集成的思想在,实际上相当于对于样本和特征都进行了采样(如果把训练数据看成矩阵,就像实际中常见的那样,那么就是一个行和列都进行采样的过程),所以可以避免过拟合。
简而言之:随机森林建立了多个决策树,并将它们合并在一起以获得更准确和稳定的预测。

3. 实验过程

3.1 数据集介绍

Labeled Faces in the Wild是一个面部照片数据库,专为研究无约束人脸识别问题而设计。该数据集包含从网络收集的13,000多张面部图像。每张脸都标有图中人物的名字。图中的1680人在数据集中有两张或更多不同的照片。该数据集是在互联网上收集的著名人物的JPEG图片的集合。
>介绍数据集,准备和需要安装的软件包
代码力求有详细的注释,面向初学者群体
使用python,黑色背景的代码块

3.2 实验代码

import numpy as np
from sklearn.datasets import fetch_lfw_peopleX, labels = fetch_lfw_people(return_X_y=True, min_faces_per_person=230)
print(X.shape, labels.shape)
print(len(set(labels)))  # 类别数from sklearn.decomposition import PCApca = PCA(n_components=200, random_state=2022)  # PCA降维,10304维变100维
X = pca.fit_transform(X)  # 执行降维from sklearn.model_selection import train_test_splitX_train, X_test, y_train, y_test = train_test_split(X, labels, random_state=2022, test_size=0.25, shuffle=True)
# 分割数据集,测试集占25%from sklearn.ensemble import RandomForestClassifierrf = RandomForestClassifier(n_estimators=100, n_jobs=-1,random_state=2022,max_depth=9)  # 随机森林模型 n_estimators决策树数量 n_jobs使用所有cpu核心计算 random_state随机种子,结果可重现
rf.fit(X_train, y_train)  # 训练
print("训练集准确率", rf.score(X_train, y_train))
print("测试集准确率", rf.score(X_test, y_test))from sklearn.metrics import classification_report
from sklearn.metrics import accuracy_score, recall_score, precision_score, f1_scorepre = rf.predict(X_test)  # 预测 类别
print("测试集准确率", accuracy_score(y_test, pre))
print("测试集召回率", recall_score(y_test, pre, average="weighted"))
print("测试集精确率", precision_score(y_test, pre, average="weighted"))
print("测试集f1", f1_score(y_test, pre, average="weighted"))from sklearn.model_selection import KFoldmetrics = []  # 评估指标
kf = KFold(n_splits=5, shuffle=True, random_state=2022)  # n_splits折数 shuffle打乱 random_state随机种子,结果可重现
for train, test in kf.split(X):X_train, X_test, y_train, y_test = X[train], X[test], labels[train], labels[test]  # 重新划分数据集rf = RandomForestClassifier(n_estimators=100, n_jobs=-1, random_state=2022, max_depth=9)rf.fit(X_train, y_train)pre = rf.predict(X_test)  # 预测 类别metrics.append([accuracy_score(y_test, pre),recall_score(y_test, pre, average="weighted"),precision_score(y_test, pre, average="weighted"),f1_score(y_test, pre, average="weighted"),])
metrics = np.mean(metrics, axis=0)  # 求平均值print("5折交叉验证 准确率、召回率、精确率和f1分别为", metrics)

3.3 运行结果

3.3 实验总结

随机森林的一个优点是它可以用于回归和分类任务,并且很容易查看模型的输入特征的相对重要性。随机森林同时也被认为是一种非常方便且易于使用的算法,因为它是默认的超参数通常会产生一个很好的预测结果。超参数的数量也不是那么多,而且它们所代表的含义直观易懂。机器学习中的一个重大问题是过拟合,但大多数情况下这对于随机森林分类器而言不会那么容易出现。因为只要森林中有足够多的树,分类器就不会过度拟合模型。
随机森林的主要限制在于使用大量的树会使算法变得很慢,并且无法做到实时预测。一般而言,这些算法训练速度很快,预测十分缓慢。越准确的预测需要越多的树,这将导致模型越慢。在大多数现实世界的应用中,随机森林算法已经足够快,但肯定会遇到实时性要求很高的情况,那就只能首选其他方法。

参考

随机森林算法原理.
随机森林算法工作原理.

基于随机森林算法的人脸数据集分类相关推荐

  1. 基于随机森林算法的糖尿病数据集回归

    基于随机森林算法的糖尿病数据集回归 作者介绍 1. 随机森林算法原理 1.1决策树与Bagging 1.2 随机森林算法 2. 实验过程 2.1 糖尿病数据集 2.2 实验过程 2.3 实验结果展示 ...

  2. 大数据分析案例-基于随机森林算法构建新闻文本分类模型

  3. RDKit | 基于随机森林的化合物活性二分类模型

    基于随机森林算法的化合物二分类机器学习模型 代码示例 #导入依赖包 import pandas as pd import numpy as np from rdkit import Chem, Dat ...

  4. 动手实操丨基于随机森林算法进行硬盘故障预测

    摘要:业界期望使用机器学习技术来构建硬盘故障预测的模型,更准确地提前感知硬盘故障,降低运维成本,提升业务体验.本案例将使用随机森林算法来训练一个硬盘故障预测模型. 本文分享自华为云社区<基于随机 ...

  5. 基于随机森林算法的贷款违约预测模型研究(Give me some credit)

    本文实验代码github:https://github.com/dengsiying/give-me-some-credit/tree/master 参考链接:从决策树到随机森林 http://www ...

  6. 基于随机森林算法进行硬盘故障预测

    摘要:本案例将带大家使用一份开源的S.M.A.R.T.数据集和机器学习中的随机森林算法,来训练一个硬盘故障预测模型,并测试效果. 本文分享自华为云社区<基于随机森林算法进行硬盘故障预测>, ...

  7. 【项目实战】基于随机森林算法的房屋价格预测模型

    [博客地址]:https://blog.csdn.net/sunyaowu315 [博客大纲地址]:https://blog.csdn.net/sunyaowu315/article/details/ ...

  8. 基于随机森林算法的多因子选股方法分析与实现(2,代码实现)

    摘要 量化投资中经常听到的"多因子模型"是个什么鬼?因子是影响因素的简称,或简单理解成指标.我们都知道股票收益受到多重因素的影响,比如宏观.行业.流动性.公司基本面.交易情绪等等. ...

  9. 基于随机森林算法的多因子选股方法分析与实现(1)

    前言 多因子量化体系在实践不断中形成了诸如 BARRA 模型的标准方法,在以往的研究报告中,有人对此进行了充分的研究其背后的金融理论及检验实践中能否获得有效的 ALPHA 因子.虽然标准化易于理解与管 ...

最新文章

  1. 新手也能立即上手,用Python90多行代码画出“樱花园”仙境(源码+注释)
  2. js基础到精通全面教程--JS教程(转载)--推荐
  3. 直播 | 北邮博士生纪厚业:异质图神经网络在阿里推荐业务中的探索
  4. module是什么类型_Linux驱动开发:为什么教程都不讲MODULE_DEVICE_TABLE的作用
  5. 白内障预防+手术中人工晶状体的选择
  6. One Order CLOSING date修改后的执行原理
  7. Matplotlib Toolkits:三维绘图工具包matplotlib.mplot3d
  8. Galaxy Fold上市时间推延 屏幕瑕疵是主因
  9. 0084-CYX的异己
  10. tortoisegit pull 远程拉取代码,提示需要密码
  11. laravel学习笔记
  12. java实现人民币金额大写
  13. 驰骋计算产业数十年的Wintel联盟开始分崩离析
  14. 20210412SQL实现全称量词和集合查询
  15. vue项目中引入阿里云滑动验证
  16. 2020考研计算机专业课,2020计算机考研大纲原文
  17. 【动态规划】prob
  18. datawhale组队学习task9—文件与文件系统
  19. Proteus仿真数字钟表电路实验报告(可下载工程文件)
  20. 51单片机和3个74HC245和6个独立按键控制24个3组LED移动亮灭

热门文章

  1. 基于 function-plot.js 开源库绘制数学函数图像实现兼文档翻译
  2. 反射 Nio channel Buffer
  3. python读取mdb文件显示_Python学习笔记(读mdb文件)
  4. 米斯特白帽子WEB安全攻防培训-信息收集
  5. 瑞芯微RK3399主板开发,RK3399芯片设计参数分析
  6. jenkins主从从服务器发布脚本执行成功但总提示失败 FATAL: Remote call on XXXX failed...
  7. 2.Nginx实现负载均衡、限流、缓存、黑白名单和灰度发布
  8. 水利工程中计算机软件用到什么,水利工程在计算机中的应用
  9. ASP.NET动态网站课程设计——个人网页
  10. AutoCAD2007中文版【32位】下载地址 仅供学习交流