当前位置: 首页 > ops >正文

DAY 19 常见的特征筛选算法

@浙大疏锦行
1.方差筛选
2.皮尔逊相关系数筛选
3.lasso筛选
4.树模型重要性
5.shap重要性
6.递归特征消除REF

1.方差筛选

# 输入:特征矩阵 X,方差阈值 threshold
# 输出:筛选后的特征矩阵 X_selected
import numpy as npdef variance_selection(X, threshold):# 计算每个特征的方差variances = np.var(X, axis=0)# 选择方差大于阈值的特征索引selected_indices = np.where(variances > threshold)[0]# 筛选特征矩阵X_selected = X[:, selected_indices]return X_selected
  1. 皮尔逊相关系数筛选
# 输入:特征矩阵 X,目标变量 y,相关系数阈值 threshold
# 输出:筛选后的特征矩阵 X_selected
import numpy as npdef pearson_correlation_selection(X, y, threshold):correlations = []for i in range(X.shape[1]):# 计算皮尔逊相关系数corr = np.corrcoef(X[:, i], y)[0, 1]correlations.append(np.abs(corr))# 选择相关系数绝对值大于阈值的特征索引selected_indices = np.where(np.array(correlations) > threshold)[0]# 筛选特征矩阵X_selected = X[:, selected_indices]return X_selected
  1. Lasso 筛选
# 输入:特征矩阵 X,目标变量 y,正则化系数 alpha,选择的特征数量 k
# 输出:筛选后的特征矩阵 X_selected
from sklearn.linear_model import Lasso
import numpy as npdef lasso_selection(X, y, alpha, k):# 创建 Lasso 模型并拟合数据lasso = Lasso(alpha=alpha)lasso.fit(X, y)# 获取特征系数coefficients = lasso.coef_# 获取系数绝对值最大的前 k 个特征的索引top_k_indices = np.argsort(np.abs(coefficients))[-k:]# 筛选特征矩阵X_selected = X[:, top_k_indices]return X_selected
  1. 树模型重要性
# 输入:特征矩阵 X,目标变量 y,选择的特征数量 k
# 输出:筛选后的特征矩阵 X_selected
from sklearn.ensemble import RandomForestClassifier
import numpy as npdef tree_importance_selection(X, y, k):# 创建随机森林模型并拟合数据model = RandomForestClassifier()model.fit(X, y)# 获取特征重要性得分importances = model.feature_importances_# 获取重要性得分最大的前 k 个特征的索引top_k_indices = np.argsort(importances)[-k:]# 筛选特征矩阵X_selected = X[:, top_k_indices]return X_selected
  1. SHAP 重要性
# 输入:特征矩阵 X,目标变量 y,选择的特征数量 k
# 输出:筛选后的特征矩阵 X_selected
import shap
from sklearn.ensemble import RandomForestClassifier
import numpy as npdef shap_importance_selection(X, y, k):# 创建随机森林模型并拟合数据model = RandomForestClassifier()model.fit(X, y)# 创建 SHAP 解释器explainer = shap.Explainer(model)# 计算 SHAP 值shap_values = explainer(X)# 计算每个特征的平均绝对值 SHAP 值mean_abs_shap = np.abs(shap_values.values).mean(axis=0)# 获取平均绝对值 SHAP 值最大的前 k 个特征的索引top_k_indices = np.argsort(mean_abs_shap)[-k:]# 筛选特征矩阵X_selected = X[:, top_k_indices]return X_selected
  1. 递归特征消除(RFE)
# 输入:特征矩阵 X,目标变量 y,模型 estimator,要保留的特征数量 n_features_to_select
# 输出:筛选后的特征矩阵 X_selected
from sklearn.feature_selection import RFEdef rfe_selection(X, y, estimator, n_features_to_select):# 创建 RFE 选择器selector = RFE(estimator, n_features_to_select=n_features_to_select)# 拟合数据并进行特征选择selector = selector.fit(X, y)# 筛选特征矩阵X_selected = selector.transform(X)return X_selected
http://www.xdnf.cn/news/13026.html

相关文章:

  • 如何实现本地快速识别相似图像
  • [尚庭公寓]01-项目概述
  • 容器-使用slim减少10x+大模型镜像
  • 信息系统分析与设计复习
  • Qt项目中使用 CmdManager 实现高效的命令分发机制
  • 国际上与麦角硫因相关的人体功效试验文献分享
  • 使用homeassistant 插件将tasmota 接入到米家
  • mysql8.0忘记root密码情况下修改密码
  • VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP
  • 十一、MySQL 事务底层与高可用原理
  • 基于PSO与BP神经网络回归模型的特征选择实战(Python实现)
  • MySQL--慢查询日志、日志分析工具mysqldumpslow
  • Java多线程实现之Runnable接口深度解析
  • SQLSERVER-DB操作记录
  • PyTorch学习路径与基础实践指南
  • window 显示驱动开发-如何查询视频处理功能(二)
  • SAM2Long本地部署,视频分割处理,绿幕抠像,超长视频支持
  • 【JavaSE】多线程基础学习笔记
  • 第二章 感知机
  • Logistics | 盘盈盘亏与报溢报损
  • FastAPI核心解密:深入“路径操作”与HTTP方法,构建API的坚实骨架
  • Unity-ECS详解
  • 北京智乐活科技有限公司 适趣ai 二面 全栈
  • 比较数据迁移后MySQL数据库和openGauss数据仓库中的表
  • tomcat指定使用的jdk版本
  • STM32使用水位传感器
  • React入门第一步:如何用Vite创建你的第一个React项目?
  • Excel 怎么让透视表以正常Excel表格形式显示
  • 旋量理论:刚体运动的几何描述与机器人应用
  • 认识电子元器件---高低边驱动