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

简述特征降维的几种方式

特征降维

1、概述

在训练的过程中,训练集会包含一些不重要的特征,可能导致模型泛化性能差,容易过拟合。而有些特征的取值很接近,其中包含的信息较少;或者两个特征同增同减,相关性高,给模型带来的信息非常重复,这个时候就需要删除一些特征来给特征降维。

一般使用低方差过滤法,PCA(主成分分析)降维法,相关系数(皮尔逊相关系数、斯皮尔曼相关系数)

2、低方差过滤法

(一)、概述

指删除方差低于阈值的一些特征

特征方差小:特征值的波动范围小,包含的信息少,模型很难学习到信息

特征方差大:特征值的波动范围大,包含的信息相对丰富,便于模型进行学习

(二)、相关api

导包:

from sklearn.feature_selection import VarianceThreshold

调用:

VarianceThreshold(threshold=0.1)

threshold:float类型,默认值为0。这个参数是VarianceThreshold进行特征过滤的标准。具体来说,当某个特征的方差小于这个阈值时,该特征就会被过滤掉。因此,threshold的值决定了过滤的严格程度。如果设置为0(默认值),那么所有记录都相同的特征(即方差为0的特征)都会被过滤掉。

3、主成分分析PCA

(一)、概述

对数据维数进行压缩,尽可能降低原数据的维数(复杂度)损失少量信息,在此过程中可能会舍弃原有数据、创造新的变量。

(二)、相关api

导包:

from sklearn.decomposition import PCA

调用:

PCA(n_components=None)

n_components:决定PCA算法应该保留的主成分数量

  • 整数k:表示保留前k个主成分
  • 小数(0,1]之间的数:表示保留的主成分的方差百分比,例如0.9表示保留90%的方差
  • 如果设置为None(默认值),则保留所有主成分

copy:决定是否在运行PCA算法之前复制输入数据

  • True(默认值):复制数据,以免修改原始数据
  • False:直接在原始数据上进行计算

random_state:随机数生成器的种子,控制随机性

4、相关系数法

(一)、概述

反映特征列之间(变量之间)密切相关程度的统计指标,常见的两个相关系数:皮尔逊相关系数、斯皮尔曼相关系数。

相关系数的值介于–1与+1之间,即–1 ≤ r ≤ +1。其性质如下:

  • 当 r > 0 时,表示两变量正相关,r < 0 时,两变量为负相关

  • 当 |r| = 1 时,表示两变量为完全相关,当r = 0时,表示两变量间无相关关系

  • 当 0 < |r| < 1时,表示两变量存在一定程度的相关。

  • 且|r|越接近1,两变量间线性关系越密切;|r|越接近于0,表示两变量的线性相关越弱

一般可按三级划分:

  • |r| <0.4为低度相关;

  • 0.4≤ |r| <0.7为显著性相关;

  • 0.7 ≤ |r| <1为高度线性相关。

(二)、皮尔逊相关系数

(1)、公式

r = n ∑ i = 1 n x i y i − ∑ i = 1 n x i ∑ i = 1 n y i n ∑ i = 1 n x i 2 − ( ∑ i = 1 n x i ) 2 n ∑ i = 1 n y i 2 − ( ∑ i = 1 n y i ) 2 x i 是特征 x 的第 i 个值 y i 是特征 y 的第 i 个值 n 是样本数量 r=\frac{n\sum_{i=1}^n x_iy_i-\sum_{i=1}^n x_i\sum_{i=1}^n y_i}{\sqrt{n\sum_{i=1}^n x_i^2-(\sum_{i=1}^n x_i)^2}\sqrt{n\sum_{i=1}^n y_i^2-(\sum_{i=1}^n y_i)^2}}\\ x_i是特征x的第i个值\\ y_i是特征y的第i个值\\ n是样本数量 r=ni=1nxi2(i=1nxi)2 ni=1nyi2(i=1nyi)2 ni=1nxiyii=1nxii=1nyixi是特征x的第i个值yi是特征y的第i个值n是样本数量

(2)、相关api

导包:

from scipy.stats import pearsonr

调用:

corr = pearsonr(x, y)

print(corr, ‘皮尔逊相关系数:’, corr[0], ‘不相关性概率:’, corr[1])

**x:**第一个变量

**y:**第二个变量,形状与第一个变量相同

(三)、斯皮尔曼相关系数

(1)、公式

R a n k I C = 1 − 6 ∑ d i 2 n ( n 2 − 1 ) n 为等级个数 d 为成对变量的等级差数 RankIC=1-\frac{6\sum d_i^2}{n(n^2-1)}\\ n为等级个数\\ d为成对变量的等级差数 RankIC=1n(n21)6di2n为等级个数d为成对变量的等级差数

(2)、相关api

导包:

from scipy.stats import spearmanr

调用:

corr = spearmanr(x, y)

print(corr, ‘斯皮尔曼相关系数:’, corr[0], ‘不相关性概率:’, corr[1])

**x:**第一个变量

**y:**第二个变量,形状与第一个变量相同


http://www.kler.cn/news/366023.html

相关文章:

  • STM32--基于STM32F103C8T6的OV7670摄像头显示
  • 大数据-190 Elasticsearch - ELK 日志分析实战 - 配置启动 Filebeat Logstash
  • fpga系列 HDL: 竞争和冒险 01
  • 数字IC后端实现 | Innovus各个阶段常用命令汇总
  • BIO,NIO,直接内存,零拷贝
  • 修改huggingface的缓存目录以及镜像源
  • IDEA中一个窗口打开多个项目-区别于eclipse
  • Netty-TCP服务端粘包、拆包问题(两种格式)
  • 使用Flask实现本机的模型部署
  • 【制造业&电子产品】电脑电子元件检测系统源码&数据集全套:改进yolo11-TADDH
  • 【贪心算法】(第十四篇)
  • 【前端学习路线】从入门到进阶(含学习资料链接和笔记)
  • 架构师备考专栏-导航页
  • ceph rgw使用sts Security Token Service
  • 钡铼技术边缘计算2DIN2DO工业无线路由器R40A
  • 【动手学强化学习】part4-时序差分算法
  • 电脑技巧:路由器知识介绍
  • 基于MATLAB(DCT DWT)
  • OpenCV视觉分析之目标跟踪(1)计算密集光流的类DISOpticalFlow的介绍
  • ffmpeg视频滤镜:定向模糊-dblur
  • 实战-任意文件下载
  • 爱奇艺大数据多 AZ 统一调度架构
  • Loess 局部权重回归
  • 构建中小企业设备管理平台:Spring Boot应用
  • 享元设计模式在Java坦克游戏中的应用
  • 深入详解 Java - Spring MVC