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

【机器学习】特征工程:特征选择、数据降维、PCA

各位同学好,今天我和大家分享一下python机器学习中的特征选择和数据降维。内容有:

(1)过滤选择;(2)数据降维PCA;(3)sklearn实现

那我们开始吧。


一个数据集中可能会有以下问题:

(1)冗余部分特征的相关度高,由于A与B之间有某种计算公式使它们相关联,A特征的变化会导致B特征的变化,容易消耗计算性能,只需要存在一个特征就可以了。

(2)噪声部分特征对预测结果有负影响,需要剔除一些与预测对象不相关的特征

理解特征选择: 现在有一个数据集,这个数据集中有100个特征,我们只需要其中的几十项,这时我们需要对这个数据集进行选择。

理解数据降维: 现在有一个数据集,数据集中有100列特征,也叫做有100个维度,通过降维将数据将到几十维。降维时,一般会改变原维度所代表的意义。例如,现在有A、B两个维度,给它降到一维,称之为C,而C维度代表的意义是同时代表A、B维度的新维度。


1. 特征选择

特征选择是单纯地从提取到的所有特征中选择部分特征作为训练集特征,特征在选择前和选择后可以改变值,也可以不改变值。但是选择后的特征维数肯定比选择前小,毕竟我们只选择了其中的一部分特征。

特征选择分为三种方式:

(1)Filter(过滤式): 根据方差、阈值选择

(2)Embedded(嵌入式): 正则化、决策树

(3)Wrapper(包裹式): 不常用

2. 过滤选择

过滤式的特征选择是根据方差选择,它会删除所有低方差的特征默认会删除所有方差为0的数据。可以使用sklearn中的 VarianceThreshold(threshold=0) 方差、阈值来实现过滤。若该列的方差小于我指定的阈值,就会删除该特征列

方差的大小可以体现数据的离散程度。方差越小,说明数据越集中,这个数据对整个结果的影响并不大,所以优先删除方差等于0或接近0的特征。

比如,当方差等于0时,表示该特征列上所有的值都是一样的,一列数据都是一样的对预测结果毫无关系,这时就可以把这一列删除。如果方差较大,该特征列的离散程度也比较大,对结果会有比较大的影响。

在sklearn中实现,导入方法: from sklearn.feature_selection import VarianceThreshold

方差、阈值过滤方法: VarianceThreshold()

参数设置: threshold: 阈值默认等于0;方差小于该阈值时删除该特征列。

# 特征选择
# 自定义数据,第0列和3列的值都是一样的
data = [[0,2,0,3],[0,1,4,3],[0,1,1,3]]
# 导入标准化方法,查看每一列的方差
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
scaler.fit_transform(data)
# 查看方差
values = scaler.var_# 导入过滤选择方法
from sklearn.feature_selection import VarianceThreshold
# 接收过滤选择方法
var = VarianceThreshold()
# 将数据传入方差、阈值过滤方法,将方差为0的特征删除
result = var.fit_transform(data)

首先使用标准化方法查看每一项特征值的方差 scaler.var_ 便于对数据的每个特征值的方差有了解,再使用过滤选择方法,默认删除方差为0的特征列。


3. PCA(主成分分析)

3.1 方法介绍

主成分分析是一种统计方法,是数据降维中的一种,通过正交变换将一组可能存在相关性的变量转换为一组线形不相关的变量,转换后的这组变量叫主成分

在用主成分分析方法研究多变量问题时,变量个数太多会增加课题的复杂性。人们希望变量的个数减少而得到的信息较多。在很多情形下,变量之间有一定的相关关系。当两个变量之间有一定的相关关系时,可以解释为,这两个变量反映此课题的信息有一定的重叠

主成分分析是对原先提出的所有变量,将重复的变量(关系紧密的变量删去多余),建立尽可能少的新变量,使得这些新变量是两两不相关的,而且这些新变量在反映课题的信息反面尽可能保持原有的信息


3.2 主成分分析求解步骤

(1)获取方差最大的正交变换

上图中蓝色坐标轴是原来数据的坐标轴,坐标上有一个点(2,2);经过变换后得到红色坐标轴,这个点的位置没有发生改变,但是点的坐标变化了;这样就可以将我们的数据变成另外一个值了。

但是这个正交变化该怎么变?我们是通过方差来决定的,也就是正交变换完后,哪个方差最大,那么就选哪个。方差越大,代表数据越不集中,对结果的影响也越大。变换公式如下:

pi 代表正交变换参数ai代表每一条数据的特征,如果求完后的结果的方差是最大的,那么就选择该组正交变化参数p


3.3 生成更多主成分

以上是生成一个主成分(新特征)的步骤。一般我们会生成多个主成分,必须遵循一个条件,也就是多个主成分之间不能存在线形相关,即特征之间不能通过某种公式来互相转换。用数学公式来表示则为协方差

(1)降维后的特征之间的协方差为0,表示各个特征关系是独立的,每个特征都不会随着其他特征变化而有规律的变化。

(2)如果两个特征之间相关联,那么这个两个的协方差较大。新生成一个主成分需要和原来的主成分求一下协方差,如果为0,证明可行。

(3)新生成的主成分的每个特征的方差应该尽可能大


3.4 sklearn 实现 PCA

导入方法: from sklearn.decomposition import PCA
降维方法: PCA()  参数设置

n_components

(1)0-1之间,维度的比例再减1。例:若原数组有4个特征列,指定n_components=0.9,代表原来有4维,现在变成4*0.9=3.6,取整数部分,现在有3维,再减1维。最终降到2维。

(2)整型数据。具体维度,不能指定超过当前 min{行数,列数} 的维度。

# PCA
# 自定义数据
data = [[4,2,76,9],[1,192,1,56],[34,5,20,90]]
# 导入方法
from sklearn.decomposition import PCA
# 构建PCA对象,默认降低一个维度
pca = PCA(n_components=0.9)
# 数据传入PCA方法
result = pca.fit_transform(data)

相关文章:

【机器学习】特征工程:特征选择、数据降维、PCA

各位同学好,今天我和大家分享一下python机器学习中的特征选择和数据降维。内容有: (1)过滤选择;(2)数据降维PCA;(3)sklearn实现 那我们开始吧。 一个数据集中…...

短视频账号矩阵系统saas管理私信回复管理系统

一、短视频矩阵号系统源码开发层面如何来解决? 1.短视频矩阵号系统源码搭建中,首先开发者需要保证api接口的稳定性 ,保证权限应用场景满足官方平台的开发预期。api---待发布、用户管理与授权绑定、私信回复与评论管理等是非常重要的权限接口。…...

利用ETLCloud自动化流程实现业务系统数据快速同步至数仓

现代企业有不少都完成了数字化的转型,而还未转型的企业或商铺也有进行数字化转型的趋势,由此可见,数据已经成为企业决策的重要依据。企业需要先获取数据,将业务系统数据同步至数仓进行整合,然后再进行数据分析。为了更…...

学习c#的第十六天

目录 C# 正则表达式 定义正则表达式 字符转义 字符类 定位点 分组构造 Lookaround 概览 数量词 反向引用构造 替换构造 替代 正则表达式选项 其他构造 Regex 类 代码示例 实例 1 实例 2 实例 3 C# 正则表达式 正则表达式 是一种匹配输入文本的模式。.Net 框…...

【论文阅读笔记】Deep learning for time series classification: a review

【论文阅读笔记】Deep learning for time series classification: a review 摘要 在这篇文章中,作者通过对TSC的最新DNN架构进行实证研究,探讨了深度学习算法在TSC中的当前最新性能。文章提供了对DNNs在TSC的统一分类体系下在各种时间序列领域中的最成功…...

如何将vscode和Linux远程链接:

如何将vscode和Linux远程链接: Remote - SSH - 远程登录Linux 安装Remote - SSH 我们下载完后,就会出现这些图标 这里点一下号 查看一下我们的主机名,并复制 输入ssh 用户名主机名 这里是要将ssh这个文件要放在主机下的哪个路径下&#xff…...

快速傅立叶卷积(FFC)

论文 LaMa: Resolution-robust Large Mask Inpainting with Fourier Convolutions https://github.com/advimman/lama 1.Introduce 解决图像绘制问题——缺失部分的真实填充——既需要“理解”自然图像的大尺度结构,又需要进行图像合成。 通常的做法是在一个大型自…...

藏头诗(C语言)

本题要求编写一个解密藏头诗的程序。 注:在 2022 年 7 月 14 日 16 点 50 分以后,该题数据修改为 UTF-8 编码。 输入格式: 输入为一首中文藏头诗,一共四句,每句一行。注意:一个汉字占三个字节。 输出格…...

适合您的智能手机的 7 款优秀手机数据恢复软件分享

如今,我们做什么都用手机;从拍照到录音,甚至作为 MP3 播放器,我们已经对手机变得非常依恋。这导致我们在手机上留下了很多珍贵的回忆。 不幸的是,我们有可能会丢失手机上的部分甚至全部数据。幸运的是,这不…...

uniapp APP下载流文件execl 并用WPS打开

使用plus.downloader.createDownload 方法将新建下载任务 HTML5 API Reference export default function plusDownload(config){if(!config){console.error("Argument should not be null");return;}const urlrequest.baseUrlconfig.url;let token uni.getStorage…...

【Python】 Python 操作PDF文档

Python 操作PDF文档 1、PDF (便携式文件格式,Portable Document Format)是由Adobe Systems在1993年用于文件交换所发展出的文件格式。 PDF主要由三项技术组成:衍生自PostScript;字型嵌入系统;资料压缩及传…...

vue3-响应式核心

​🌈个人主页:前端青山 🔥系列专栏:Vue篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来vue篇专栏内容:vue3-响应式核心 响应式核心 目录 响应式核心 3.1ref() 3.2computed () 3.3 reactive() 3.4 …...

人工智能的广泛应用与影响

目录 前言1 智能手机与个人助手2 医疗保健3 自动驾驶技术4 金融领域5 教育与学习6 智能家居与物联网7 娱乐与媒体8 环境保护结语 前言 人工智能(Artificial Intelligence,AI)是当今科技领域的璀璨明星,它不仅在技术创新方面掀起了…...

SAP创建权限对象、角色、并分配角色

一、SU20:维护权限字段 二、SU21创建权限对象,分配权限字段: 三、SU24关联程序和自建权限对象(标准tcode会默认存在标准权限对象) 四、PFCG创建角色 五、SU01给用户分配角色 一、su20:维护权限字段 X点新建: 填入…...

[uni-app]记录APP端跳转页面自动滚动到底部的bug

文章目录 bug描述原因分析: 处理方案 bug描述 1.点击的A页面, 跳转到了B页面, 第一次页面正常显示 2.从B页面返回A页面 3.A页面不进行任何操作,再次点击A页面进入B页面 4.B页面自动滚动到底部. 原因 看一段A页面代码 let that thisthis.defaultScrollTop uni.getStorageSy…...

应用软件安全编程--23避免使用不安全的操作模式

块密码又称为分组加密, 一次加密明文中的一个块。将明文按一定的位长分组,明文组经过加密运 算得到密文组,密文组经过解密运算(加密运算的逆运算),还原成明文组。这种加密算法共有四种操作 模式用于描述如何重复地应用密码的单块操作来安全的…...

国产高云FPGA:纯verilog实现视频图像缩放,提供6套Gowin工程源码和技术支持

目录 1、前言免责声明 2、相关方案推荐国产高云FPGA相关方案推荐国产高云FPGA基础教程 3、设计思路框架视频源选择OV5640摄像头配置及采集动态彩条跨时钟FIFO图像缩放模块详解设计框图代码框图2种插值算法的整合与选择 Video Frame Buffer 图像缓存DDR3 Memory Interface 4、Go…...

python操作windows窗口,python库pygetwindow使用详解

文章目录 一、pygetwindow模块简介二、pygetwindow常用方法1、常用方法2、window常用方法 一、pygetwindow模块简介 pygetwindow是一个Python第三方库,用于获取、管理和操作窗口。它提供了一些方法和属性,使得在Python程序中可以轻松地执行各种窗口操作…...

手写消息队列(基于RabbitMQ)

一、什么是消息队列? 提到消息队列是否唤醒了你脑海深处的记忆?回看前面的这篇文章:《Java 多线程系列Ⅳ(单例模式阻塞式队列定时器线程池)》,其中我们在介绍阻塞队列时说过,阻塞队列最大的用途…...

kafka本地安装报错

Error: VM option ‘UseG1GC’ is experimental and must be enabled via -XX:UnlockExperimentalVMOptions. #打开 bin/kafka-run-class.sh KAFKA_JVM_PERFORMANCE_OPTS“-server -XX:UseG1GC -XX:MaxGCPauseMillis20 -XX:InitiatingHeapOccupancyPercent35 -XX:ExplicitGCInv…...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

JVM垃圾回收机制全解析

Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

【论文笔记】若干矿井粉尘检测算法概述

总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

反射获取方法和属性

Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...

2025盘古石杯决赛【手机取证】

前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

PL0语法,分析器实现!

简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...

力扣-35.搜索插入位置

题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

初探Service服务发现机制

1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能:服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源&#xf…...

【Go语言基础【13】】函数、闭包、方法

文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...