【机器学习】特征降维 - 方差选择法VarianceThreshold

「作者主页」:士别三日wyx
「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者
「推荐专栏」:对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》

方差选择法

  • 一、方差科普
  • 二、方差选择API
  • 三、获取数据集
  • 四、进行方差过滤
  • 五、获取特征的方差值

提取的特征当中,有一些相关(相似)的「冗余特征」,这种特征是没有必要统计的,我们需要「减少」相关的特征,留下不相关的特征。也就是「特征降维」

特征降维的方式有很多,这里使用其中的一种:方差选择法(低方差过滤)

一、方差科普

先简单科普一下,方差=平方的均值减去均值的平方,公式是:

在这里插入图片描述

比如,1、2、3、4、5这五个数,平均数是3;

「方差」是各个数据分别与其和的平均数之差的平方的和的平均数:[(1-3)^2+(2-3)^2+(3-3)^2+(4-3)^2+(5-3)^2]/5=2,也就是2。

方差小,就意味某个特征大多样本的值比较相近;方差大,就意味着某个特征大多样本的值都有差别。

方差选择法也叫「低方差过滤」,顾名思义,就是设定一个方差的值,所有低于这个方差的特征都会被删掉。


二、方差选择API

sklearn.feature_selection 是特征选择的API

sklearn.feature_selection.VarianceThreshold( threshold=0 )

  • VarianceThreshold.fit_transform( data ):接收字典类型的原始数据,返回方差过滤后的数字特征
  • VarianceThreshold.inverse_transform( data ):将过滤后的数字特征,转回原始数据
  • VarianceThreshold.get_feature_names_out():返回特征名字
  • VarianceThreshold.variances_:返回每个特征对应的方差值

三、获取数据集

这里我们使用鸢尾花数据集来做示例

from sklearn import datasets# 初始化鸢尾花数据集
iris = datasets.load_iris()# 打印数据特征
print(iris.data)
# 打印特征数总结
print(iris.data.shape)

输出:

[[5.1 3.5 1.4 0.2][4.9 3.  1.4 0.2]......[5.9 3.  5.1 1.8]]
(150, 4)

从输出结果可以看到,数据集现在有150条数据,每条数据有4个特征。


四、进行方差过滤

接下来我们进行方差过滤,指定方差为0.2

from sklearn import feature_selection
from sklearn import datasets# 初始化鸢尾花数据集
iris = datasets.load_iris()
# 初始化转换器(指定方差为0.2)
vt = feature_selection.VarianceThreshold(threshold=0.2)# 使用转换器对数据进行低方差过滤
result = vt.fit_transform(iris.data)# 打印数据特征
print(result)
print(result.shape)

输出:

[[5.1 1.4 0.2][4.9 1.4 0.2]......[5.9 5.1 1.8]]
(150, 3)

从输出结果可以看到,转换后的数据集有150条数据,每条数据有3个特征,方差小于0.2的那个特征被过滤掉了。

接下来,我们把方差改成1

from sklearn import feature_selection
from sklearn import datasets# 初始化鸢尾花数据集
iris = datasets.load_iris()
# 初始化转换器(指定方差为1)
vt = feature_selection.VarianceThreshold(threshold=1)# 使用转换器对数据进行低方差过滤
result = vt.fit_transform(iris.data)# 打印数据特征
print(result)
print(result.shape)

输出:

[[1.4][1.4]......[5.1]]
(150, 1)

从输出结果可以看到,数据集的的特征变成了1个,方差小于1的那三个特征被过滤掉了。


五、获取特征的方差值

接下来,我们获取每一个特征的方差值,来验证过滤的准确性。

from sklearn import feature_selection
from sklearn import datasets# 初始化鸢尾花数据集
iris = datasets.load_iris()
# 初始化转换器(指定方差为1)
vt = feature_selection.VarianceThreshold(threshold=0.2)# 使用转换器对数据进行低方差过滤
result = vt.fit_transform(iris.data)# 获取特征的方差值
print(vt.variances_)

输出:

[0.68112222 0.18871289 3.09550267 0.57713289]

从输出结果可以看到,4个特征的方差值,有3个大于0.2,有1个大于1,上述试验的过滤结果符合预期。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/20480.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Slam十四讲之第一讲和第二讲,实践编程基础

目录 1.镜像寻找①方法1:百度网盘下载②方法2:在开源镜像网站上下载,③方法3:直接在Ubuntu官网下载 2 在VMware中创建虚拟机并安装Ubuntu18.043 安装VMware Tools4 初始系统中,部分软件的安装4.1 gcc 安装4.2 g安装4.3…

github搜索案例

目录结构 public/index.html <!DOCTYPE html> <html lang""><head><meta charset"utf-8"><!-- 针对IE浏览器的一个特殊配置&#xff0c;含义是让IE浏览器以最高的渲染级别渲染页面 --><meta http-equiv"X-UA-Comp…

阿里云配置端口安全组策略

文章目录 为何配置安全组安全组设置安全组应用到实例中 为何配置安全组 nginx正确配置了83端口&#xff0c;却无法访问资源&#xff0c;报502错误&#xff0c;这大概就是服务器的安全策略原因 安全组设置 安全组配置地址 安全组应用到实例中 配置地址

【设计模式】23种设计模式——工厂模式(原理讲解+应用场景介绍+案例介绍+Java代码实现)

工厂模式 需求了解 看一个披萨的项目&#xff1a;要便于披萨种类的扩展&#xff0c;要便于维护 披萨的种类很多(比如 GreekPizz、CheesePizz 等)披萨的制作有 prepare&#xff08;准备材料&#xff09;,bake&#xff08;烘焙&#xff09;,cut&#xff08;切割&#xff09;,b…

element ui 导入模块的封装

导入组件的封装 <template><Modal :visible"visible" title"导入" onSave"onSave" onCancal"closeDialog"><template #default><el-upload ref"upload" class"upload-demo"action"ht…

jmeter 连接数据库常见报错

1. 不允许主机连接到MySQL 报错信息&#xff1a; Response message:java.sql.SQLException: Cannot create PoolableConnectionFactory (null, message from server: "Host 192.168.1.6 is not allowed to connect to this MySQL server") 说明&#xff1a;本机的地…

Jmeter 压测工具的安装及使用

目录 一、简介二、下载三、安装四、启动五、使用1.调整界面显示大小2.添加线程组3.添加 HTTP 请求4.添加 HTTP 请求头5.保存压测配置6.启动压测7.查看结果树8.查看聚合报告 六、补充1.设置中文2.设置字体大小&#xff08;永久生效&#xff09;3.中文乱码 一、简介 官网地址&am…

【ThinkPHP】实现一个逆向工程生成model

ThinkPHP为了节省一些重复的步骤&#xff0c;写了个简单版的生成model的工具&#xff0c;逆向生成model代码&#xff0c;节省时间&#xff0c;专注写业务代码。 ThinkPHP中的命令行也提供了一些生成代码的命令&#xff1a; make:controller 创建控制器 make:model 创建模型 m…

Photoshop简单案例(10)——利用PS修改证件照尺寸为1寸(或其他)

目录 一、项目介绍二、基本流程三、效果演示 一、项目介绍 本文介绍一下利用Photoshop修改证件照尺寸为1寸的方法。 二、基本流程 首先打开新建一个空白画布&#xff0c;设置画布宽度和高度分别为25mm和35mm&#xff0c;分辨率为300&#xff0c;背景颜色与证件照背景相同&am…

解决Ubuntu下arm-none-linux-gnueabihf-gcc -v :未找到命令

问题&#xff1a;arm-none-linux-gnueabihf-gcc -v arm-none-linux-gnueabihf-gcc&#xff1a;未找到命令 学习MP135开发板搭建环境之后没gcc不可用&#xff0c;网上找了很多教程都没法解决 解决方法&#xff1a; 1、重启&#xff1a;&#xff08;我试了没用&#xff09; 2、…

使用OpenCV显示图像的RGB颜色直方图

#include <opencv2/opencv.hpp> #include <opencv2/imgproc/imgproc.hpp> using namespace cv;int main( ) {Mat srcImage;srcImage=<

LiveGBS流媒体平台GB/T28181功能-作为上级平台对接海康大华华为宇视等下级平台监控摄像机NVR硬件执法仪等GB28181设备

LiveGBS作为上级平台对接海康大华华为宇视等下级平台监控摄像机NVR硬件执法仪等GB28181设备 1、背景说明2、部署国标平台2.1、安装使用说明2.2、服务器网络环境2.3、信令服务配置 3、监控摄像头设备接入3.1、海康GB28181接入示例3.2、大华GB28181接入示例3.3、华为IPC GB28181接…