当前位置: 首页 > 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…...

【JavaEE】-- HTTP

1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器

一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能

下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

在rocky linux 9.5上在线安装 docker

前面是指南,后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...

线程与协程

1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...

质量体系的重要

质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络&#xf…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现

摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...

python如何将word的doc另存为docx

将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

大数据学习(132)-HIve数据分析

​​​​🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言&#x1f4…...

蓝桥杯3498 01串的熵

问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798&#xff0c; 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...