算法金 | 使用随机森林获取特征重要性
大侠幸会幸会,我是日更万日 算法金;0 基础跨行转算法,国内外多个算法比赛 Top;放弃 BAT Offer,成功上岸 AI 研究院 Leader;
<随机森林及其应用领域> 随机森林是一种强大的机器学习算法,其基本原理在于通过集成多个决策树来提高整体性能。决策树是一种流程图结构,通过一系列的决策来达到最终目标。
而随机森林则是通过构建许多这样的决策树,每个决策树都在某种程度上是独立的,从而提高了模型的稳健性和准确性。这种算法在各种领域都有着广泛的应用。
防失联,进免费知识星球交流。算法知识直达星球:https://t.zsxq.com/ckSu3
- 项目实战 -
在接下来的部分,我们深入地探讨特征重要性在实际问题中的运用。我们将使用UCI红酒分类数据集,这个数据集来自UCI机器学习仓库,总共包含了3种红酒,178个样本。每个样本有13个特征,用于描述红酒的各种化学成分。https://archive.ics.uci.edu/ml/machine-learning-databases/wine/wine.data
<加载UCI红酒分类数据集>
数据集概览
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
加载数据集
url = “https://archive.ics.uci.edu/ml/machine-learning-databases/wine/wine.data”
column_names = [“Class”, “Alcohol”, “Malic acid”, “Ash”, “Alcalinity of ash”, “Magnesium”, “Total phenols”, “Flavanoids”, “Nonflavanoid phenols”, “Proanthocyanins”, “Color intensity”, “Hue”, “OD280/OD315 of diluted wines”, “Proline”]
data = pd.read_csv(‘wine-1.csv’, names=column_names)
分割数据集
X = data.drop(“Class”, axis=1)
y = data[“Class”]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
在这段代码的帮助下,我们不需要任何高超的技术,只需要几行简单的代码,就能将这些数据划分成可以训练机器学习模型的形式。
<训练随机森林模型>
构建随机森林模型
创建随机森林分类器
rf_classifier = RandomForestClassifier(n_estimators=100, random_state=42)
在训练集上训练模型
rf_classifier.fit(X_train, y_train)
训练完成后,评估模型
training_accuracy = rf_classifier.score(X_train, y_train)
print(f’训练集准确率:{training_accuracy:.2f}') # 评估训练集上的准确率
test_accuracy = rf_classifier.score(X_test, y_test)
print(f’测试集准确率:{test_accuracy:.2f}') # 评估测试集上的准确率
训练集准确率:1.00测试集准确率:1.0完美!
<查看特征重要性>
特征重要性的计算
决策树是通过计算每次特征划分导致的样本杂质(信息熵等)减少程度,来决定该特征的重要性。RandomForestClassifier会自动计算并存储特征重要性。
获取特征重要性
feature_importance = pd.DataFrame({“Feature”: X_train.columns, “Importance”: rf_classifier.feature_importances_})
feature_importance = feature_importance.sort_values(by=“Importance”, ascending=False)
打印特征重要性
print(feature_importance)
<可视化特征重要性>
import numpy as np
import matplotlib.pyplot as plt
提取特征重要性信息
feature_names = X_train.columns
importances = rf_classifier.feature_importances_
indices = np.argsort(importances)[::-1]
绘制条形图
plt.bar(range(X_train.shape[1]), importances[indices], align=‘center’)
在每个条形图上显示特征重要性数值
for x in range(X_train.shape[1]):
text = ‘{:.2f}’.format(importances[indices[x]])
plt.text(x, importances[indices[x]] + 0.01, text, ha=‘center’)
设置x轴刻度标签
plt.xticks(range(X_train.shape[1]), feature_names[indices], rotation=90)
plt.xlim([-1, X_train.shape[1]])
plt.ylim(0.0, np.max(importances) + 0.05)
添加标签和标题
plt.xlabel(‘Feature’)
plt.ylabel(‘Importance’)
plt.title(‘Random Forest Feature Importance’)
自动调整布局并显示图形
plt.tight_layout()
plt.show()
<自动选择重要特征>
应用特征选择算法
from sklearn.feature_selection import SelectFromModel
使用SelectFromModel进行特征选择
sfm = SelectFromModel(rf_classifier, threshold=‘median’) # 阈值可选,比如threshold=0.1
sfm.fit(X_train, y_train)
选出5个重要特征
X_train_selected = sfm.transform(X_train)
X_test_selected = sfm.transform(X_test)
查看选中的特征
selected_features = X_train.columns[sfm.get_support()]
重新建立模型并在选中特征上进行训练
rf_classifier_selected = RandomForestClassifier(n_estimators=100, random_state=42)
rf_classifier_selected.fit(X_train_selected, y_train)
在测试集上进行预测
y_pred_selected = rf_classifier_selected.predict(X_test_selected)
评估模型性能
accuracy_selected = accuracy_score(y_test, y_pred_selected)
打印选中的特征和模型评估结果
print(“Selected Features:”, list(selected_features))
print(“Model Accuracy with Selected Features:”, accuracy_selected)
自动选择了 7 个重要特征,其中脯氨酸和酒精含量位列前两。这与手动分析特征重要性的结果是一致的。通过运行可以发现,结果和13个特征的方法相当,Cool…
/ __ \ | |
| / / ___ ___ | |
| | / _ \ / _ | |
| _/\ () | () | |
_/_/ ___/|_|
打完收工 [ 抱拳礼 ]星辰大海,江湖再会,溜了溜了~
相关文章:
算法金 | 使用随机森林获取特征重要性
大侠幸会幸会,我是日更万日 算法金;0 基础跨行转算法,国内外多个算法比赛 Top;放弃 BAT Offer,成功上岸 AI 研究院 Leader; <随机森林及其应用领域> 随机森林是一种强大的机器学习算法,其…...
网络安全的重要性
网络安全的重要性 网络安全是指保护网络系统免受未授权的访问、攻击、破坏或未经授权的数据泄露的能力。随着互联网的普及和数字化进程的加速,网络安全问题日益凸显,成为个人、企业和国家必须面对的重要挑战。 网络安全的威胁 网络安全威胁包括黑客攻…...
Leetcode40 无重复组合之和
题目描述: 给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用 一次 。 注意:解集不能包含重复的组合。 思路分析 这个题是…...
详解MATLAB中处理日期和时间的函数
在MATLAB中处理日期和时间时,可以使用多种函数来进行计时和时间差计算。以下是对一些常用函数的详细解释: 1. tic 和 toc 用途:用来测量一段代码执行的时间。用法:tic; % 启动秒表 % 你的代码 elapsedTime toc; % 停止秒表&…...
Java养老护理助浴陪诊小程序APP源码
💖护理助浴陪诊小程序💖 一、引言:养老新趋势🌱 在快节奏的现代生活中,养老问题逐渐成为了社会关注的焦点。如何为老年人提供便捷、贴心的服务,让他们晚年生活更加安心、舒适,是我们每个人都需…...
go的singleFlight学习
Package singleflight provides a duplicate function call suppression mechanism “golang.org/x/sync/singleflight” 原来底层是 waitGroup,我还以为等待的协程主动让出 cpu 了,没想到 waitGroup.Wait() 阻塞了 doCall 不但返回值是 func 的 val 和…...
高电压技术-冲击高压发生器MATLAB仿真
微❤关注“电气仔推送”获得资料(专享优惠) 冲击电压发生器是产生冲击电压波的装置,用于检验电力设备耐受大气过电压和操作过电压的绝缘性能,冲击电压发生器能产生标准雷电冲击电压波形,雷电冲击电压截波,标准操作冲击…...
【STM32】SysTick系统滴答定时器
1.SysTick简介 CM4内核的处理和CM3一样,内部都包含了一个SysTick定时器,SysTick 是一个24 位的倒计数定时器,当计到0 时 ,将 从RELOAD 寄存器中自动重装载定时初值。只要不把它在SysTick 控制及状态寄存器中的使能位清除…...
编码遵循五大设计原则创建出更加健壮、可维护和可扩展的软件系统
一、单一职责原则(SRP) * 定义:一个类应该只有一个引起它变化的原因。 * 解释:意味着一个类应该专注于做一件事情,当需求发生变化时,只影响到一个类。这有助于降低类间的耦合,使得代码更易于理…...
记录一个问题
问题描述 如果一个物料既在A总成零件号下计算为托盘库,在B总成零件号下计算为箱库,则放于箱库。 A中选择排名第21的递补进托盘库。(也需要判断递补的是否在其他总成零件中为箱库,是的话继续递补判断) 解决思路 为了…...
ONLYOFFICE 8.1版本桌面编辑器测评:重塑办公效率的巅峰之作
在数字化办公日益普及的今天,一款高效、便捷且功能强大的桌面编辑器成为了职场人士不可或缺的工具。ONLYOFFICE 8.1版本桌面编辑器凭借其卓越的性能和丰富的功能,成功吸引了众多用户的目光。今天,我们将对ONLYOFFICE 8.1版本桌面编辑器进行全…...
【shell脚本速成】python安装脚本
文章目录 案例需求应用场景解决问题脚本思路案例代码 🌈你好呀!我是 山顶风景独好 🎈欢迎踏入我的博客世界,能与您在此邂逅,真是缘分使然!😊 🌸愿您在此停留的每一刻,都沐…...
Redis报错:MISCONF Redis is configured to save RDB snapshots
错误提示内容: 2024-06-25 16:30:49 : Connection: Redis_Server > [runCommand] PING 2024-06-25 16:30:49 : Connection: Redis_Server > Response received : -MISCONF Redis is configured to save RDB snapshots, but it is currently not able to pers…...
关于使用绿联 USB-A转RJ45 2.5G网卡提速的解决问题
问题 网络下载速率低 网线是七类网线,外接的USB网卡驱动 我的自带网卡是 I219v 在嵌入了2.5G网络后一直无法到达1.5G以上。 平均测速300~500M 解决方案 更新了USB的网卡驱动 禁用了 I219-V的驱动。测速即可 USB驱动下载地址 https://download.csdn.net/downlo…...
Qt: QPushButton 按钮实现 上图标下文字
效果如下: 实现有如下几种方式: 1. 使用 QPushButton 设置 setStyleSheet 例: ui->recorder->setStyleSheet("QPushButton{"\"border: 1px solid #00d2ff; "\"min-height: 60px; "\"col…...
使用阿里云效API操作流水线
使用阿里云效(Alibaba Cloud DevOps)API操作流水线时,需要注意以下几个方面: 认证与授权 确保你已经获取了正确的访问凭证(AccessKey ID 和 AccessKey Secret),并且这些凭证具有足够的权限来执行…...
使用命令行创建uniapp+TS项目,使用vscode编辑器
一:如果没有pnpm,先安装pnpm 二:使用npx工具和degit工具从 GitHub 上的 dcloudio/uni-preset-vue 仓库克隆一个名为 vite-ts 的分支,到项目中. 执行完上面命令后,去manifest.json添加appid(自己微信小程序的Id),也可不执行直接下一步,执行pnpm install ,再执行pnpm:dev:mp-weix…...
ABC355 Bingo2
分析: 找出其中一行或列或任意对角线被全部标记,即可输出回合数,否则输出-1 如果x%n0,行是x/n,列是n 如果x%n!0,行是x/n1,列是x%n 如果行列或行列n1即为对角线。 标记行列对角线…...
Spring+Vue项目部署
目录 一、需要的资源 二、步骤 1.首先要拥有一个服务器 2.项目准备 vue: 打包: 3.服务器装环境 文件上传 设置application.yml覆盖 添加启动和停止脚本 编辑 安装jdk1.8 安装nginx 安装mysql 报错:「ERR」1273-Unknown collation: utf8m…...
【uml期末复习】统一建模语言大纲
前言: 关于uml的期末复习的常考知识点,可能对你们有帮助😉 目录 第一部分 概念与基础 第一章 面向对象技术 第二章 统一软件过程 第三章 UML概述 第四章 用例图 第五章 类图 第六章 对象图 第七章 顺序图 第八章 协作图 第九章 状态…...
[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解
突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 安全措施依赖问题 GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...
模型参数、模型存储精度、参数与显存
模型参数量衡量单位 M:百万(Million) B:十亿(Billion) 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的,但是一个参数所表示多少字节不一定,需要看这个参数以什么…...
云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地
借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...
mongodb源码分析session执行handleRequest命令find过程
mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程,并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令,把数据流转换成Message,状态转变流程是:State::Created 》 St…...
【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...
MySQL 8.0 OCP 英文题库解析(十三)
Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...
selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...
