机器学习特征降维

目录

特征降维概念

低方差过滤法

PCA主成分分析

相关系数法

小结


特征降维概念

特征对训练模型时非常重要的;用于训练的数据集包含一些不重要的特征,可能导致模型性能不好、泛化性能不佳;例如:

  • 某些特征的取值较为接近,其包含的信息较少
  • 希望特征独立存在对预测产生影响,两个特征同增同减非常相关,也会干扰模型的学习

特征降维是指在某些限定条件下,降低特征个数常用的方法:
低方差过滤法、PCA(主成分分析)降维法、相关系数(皮尔逊相关系数、斯皮尔曼相关系数) 


低方差过滤法

低方差过滤法:指的是删除方差低于某些阈值的一些特征

  1. 特征方差小:特征值的波动范围小,包含的信息少,模型很难学习到数据的规律
  2. 特征方差大:特征值的波动范围大,包含的信息相对丰富,便于模型学习事物规律(异常值除外)

机器学习低方差过滤API:

  • sklearn.feature_selection.VarianceThreshold(threshold = 0.0)  实例化对象用于删除所有低方差特征
  • variance_obj.fit_transform(X)  X:numpy array格式的数据[n_samples,n_features]
import numpy as np
import pandas as pd
from sklearn.feature_selection import VarianceThreshold
np.set_printoptions(suppress=True)
pd.set_option('display.float_format', lambda x: '%.4f' % x)
def dm01_VarianceThreshold():mydata = pd.read_csv('./data/factor_returns.csv')print('mydata-->\n', mydata.columns)print('mydata-->\n', mydata.shape)transfer = VarianceThreshold(threshold=0.2)mydata = transfer.fit_transform(mydata.iloc[:, 1:10]) # /0123456print(mydata.shape)print(mydata)
  •  效果:(200,11) 降到了(200,8) 

PCA主成分分析

主成分分析(Principal Component Analysis,PCA)

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

通过正交变换将一组可能存在相关性的变量转换为一组线性不相关的变量,转换后的这组变
量叫主成分。

  • sklearn.decomposition.PCA(n_components=None) 将数据分解为较低维数空间
  • n_components: 小数表示保留百分之多少的信息;整数表示减少到多少特征 例如:由20个特征减少到10个 
  • 返回值:转换后指定维度的array

非主要成分的数据不是被删除,而是被压缩,在空间几何中被称为投影 

from sklearn.decomposition import PCA
def dm02_PCA():data = [[2, 8, 4, 5],[6, 3, 0, 8],[5, 4, 9, 1]]transfer = PCA(n_components=0.9)data1 = transfer.fit_transform(data)print(data1, data1.shape)transfer2 = PCA(n_components=3)data2 = transfer2.fit_transform(data)print(data2, data2.shape)
  •  主成分分析变换后,数据会发生变化

相关系数法

相关系数:反映特征列之间(变量之间)密切相关程度的统计指标。

特征x和目标值y的密切程度,是否同增同减;特征x和特征x之间是否同增同减;

可以把密切相关的2个列,删除掉1列,达到特征降维的效果

  • 常见2个相关系数:皮尔逊相关系数、斯皮尔曼相关系数 

皮尔逊相关系数  

  • 反映变量之间相关关系密切程度的统计指标

相关系数的值介于–1与+1之间,当 r>0 时,表示两变量正相关,r<0 时,两变量为负相关,当 |r|=1 时,表示两变量为完全相关,当r=0时,表示两变量间无相关关系。

|r|<0.4为低度相关;0.4≤|r|<0.7为显著性相关;0.7≤|r|<1为高度线性相关

  • from scipy.stats import pearsonr
from scipy.stats import pearsonr
def dm03_pearsonr():x1 = [12.5, 15.3, 23.2, 26.4, 33.5, 34.4, 39.4, 45.2, 55.4, 60.9]x2 = [21.2, 23.9, 32.9, 34.1, 42.5, 43.2, 49.0, 52.8, 59.4, 63.5]print('pearsonr(x1, x2)-->', pearsonr(x1, x2))

相关系数斯皮尔曼

from scipy.stats import spearmanr
def dm04_spearmanr():x1 = [12.5, 15.3, 23.2, 26.4, 33.5, 34.4, 39.4, 45.2, 55.4, 60.9]x2 = [21.2, 23.9, 32.9, 34.1, 42.5, 43.2, 49.0, 52.8, 59.4, 63.5]print('spearmanr(x1, x2)-->', spearmanr(x1, x2))

斯皮尔曼相关系数与之前的皮尔逊相关系数大小性质一样,取值 [-1, 1]之间,斯皮尔曼相关系数比皮尔逊相关系数应用更加广泛。


小结

  • 低方差过滤法:按照阈值,把方差比较小的某一列进行剔除,sklearn.feature_selection.VarianceThreshold
  •  PCA主成分分析:数据压缩,高维数据转换为低维数据,然后产生了新的变量,sklearn.decomposition.PCA
  • 皮尔逊相关系数:|r|<0.4为低度相关;0.4≤|r|<0.7为显著性相关;0.7≤|r|<1为高度线性相关,from scipy.stats import pearsonr
  • 斯皮尔曼相关系数:通过等级差进行计算,计算相对简单,使用更广,from scipy.stats import spearmanr

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

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

相关文章

MySQL查询篇-聚合函数-窗口函数

文章目录 distinct 关键字聚合函数常见的聚合函数group by和having 分组过滤 窗口函数with as窗口聚合函数排名窗口函数值窗口函数 distinct 关键字 distinct 去重数据&#xff0c;ps:null值也会查出来 select distinct column from table;聚合函数 常见的聚合函数 select …

YOLOv8独家原创改进: AKConv(可改变核卷积)

1.AKConv原理介绍 地址:2311.11587 (arxiv.org) 摘要:基于卷积运算的神经网络在深度学习领域取得了令人瞩目的成果,但标准卷积运算存在两个固有的缺陷。一方面,卷积运算仅限于局部窗口,无法捕获其他位置的信息, 并且它的采样形状是固定的。 另一方面,卷积核的大小固定为…

08.4.grafana自定义图形并直接数据库取值

grafana自定义图形并直接数据库取值 自定义添加油表图形 选择gauge图形&#xff0c;并且配置对应设定值&#xff0c;点击应用 如图所示&#xff0c;可以看到仪表盘上的值是zabbix上取得值 配置grafana直接数据库取值 添加mysql数据源 添加后进行配置&#xff0c;我这…

通过内网穿透实现远程访问个人电脑资源详细过程(免费)(NatApp + Tomcat)

目录 1. 什么是内网穿透 2. 内网穿透软件 3. NatApp配置 4. 启动NatApp 5. 通过内网穿透免费部署我们的springboot项目 通过内网穿透可以实现远程通过网络访问电脑的资源&#xff0c;本文主要讲述通过内网穿透实现远程访问个人电脑静态资源的访问&#xff0c;下一章节将讲…

Mobilenet四代网络模型架构

一、Mobilenet v1 MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications 论文地址:https://arxiv.org/abs/1704.04861https://arxiv.org/abs/1704.04861 1.概述 Mobilenet是一个用于移动端和嵌入式的神经网络,其核心思想是采用深度可分离…

纯血鸿蒙APP实战开发——首页下拉进入二楼效果案例

介绍 本示例主要介绍了利用position和onTouch来实现首页下拉进入二楼、二楼上划进入首页的效果场景&#xff0c;利用translate和opacity实现动效的移动和缩放&#xff0c;并将界面沉浸式&#xff08;全屏&#xff09;显示。 效果图预览 使用说明 向下滑动首页页面超过触发距…

BGP学习一:关于对等体建立和状态组改变

目录 一.BGP基本概念 &#xff08;1&#xff09;.BGP即是协议也是分类 1.早期EGP 2.BGP满足不同需求 3.BGP区域间传输的优势 &#xff08;1&#xff09;安全性——只传递路由信息 &#xff08;2&#xff09;跨网段建立邻居 4.BGP总结 5.BGP的应用 &#xff08;1&#…

《动手学深度学习》V2(11-18)

文章目录 十一、二 模型选择与过拟合和欠拟合1、模型的选择2、过拟合和欠拟合3、估计模型容量4、线性分类器的VC维5、过拟合欠拟合的代码实现 :fire:①生成数据集②定义评估损失③定义训练函数④三阶多项式函数拟合⑤线性函数拟合(欠拟合)⑤高阶多项式函数拟合(过拟合) 十三、权…

docker私有仓库部署与管理

一、搭建本地公有仓库 1.1 首先下载registry镜像 docker pull registry 1.2 在daemon.json文件中添加私有镜像仓库地址并重新启动docker服务 vim /etc/docker/daemon.json 1.3 运行registry容器 docker run -itd -v /data/registry:/var/lib/registry -p 5000:5000 --restartal…

VP Codeforces Round 944 (Div 4)

感受&#xff1a; A~G 其实都不难&#xff0c;都可以试着补起来。 H看到矩阵就放弃了。 A题&#xff1a; 思路&#xff1a; 打开编译器 代码&#xff1a; #include <iostream> #include <vector> #include <algorithm> #define int long long using na…

Ansible——playbook编写

目录 环境配置 一、简介 1.什么是playbook 2.playbook组成 二、应用实例 1.基础命令 1.编写 ceshi1.yaml 文件 2.运行Playbook 2.定义、引用变量 1.编写ceshi2.yaml文件 3.指定远程主机sudo切换用户 1.编写ceshi3.yaml文件 2.修改被控主机sudoers文件 3.给zhangsa…

等保一体机能过三级等保吗?过等保无需再买安全设备如何做到?

等保一体机能过三级等保吗&#xff1f;过等保无需再买安全设备如何做到&#xff1f; 全云在线 2024-03-28 12:08 广东 尽管等保建设的标准是统一的&#xff0c;但由于不同行业和用户规模的差异&#xff0c;建设方案呈现出多样化的特点。 虽然重点行业过等保现象确实已经十分…

Unity图文混排EmojiText的使用方式和注意事项

​​​​​​​ 效果演示&#xff1a; 使用方式&#xff1a; 1、导入表情 2、设置图片格式 3、生成表情图集 4、创建/修改目标材质球 5、测试 修复换行问题 修复前&#xff1a; 修复后&#xff1a; 修复代码&#xff1a; 组件扩展 1、右键扩展 2、组件归类&#…

南京信工一班IP(2)

第六章&#xff0c;BGP—边界网关协议 自治系统—AS ​ 定义&#xff1a;由一个单一的机构或组织所管理的一系列IP网络及其设备所构成的集合。 ​ AS的来源&#xff1a; 整个网络规模过大&#xff0c;会导致路由信息收敛速度过慢&#xff0c;设备对相同目标认知不同。AS之间…

LeetCode题目104: 二叉树的最大深度(递归\迭代\层序遍历\尾递归优化\分治法实现 )

❤️❤️❤️ 欢迎来到我的博客。希望您能在这里找到既有价值又有趣的内容&#xff0c;和我一起探索、学习和成长。欢迎评论区畅所欲言、享受知识的乐趣&#xff01; 推荐&#xff1a;数据分析螺丝钉的首页 格物致知 终身学习 期待您的关注 导航&#xff1a; LeetCode解锁100…

Android system property运作流程源码分析

一.序 前文分析了build.prop这个系统属性文件的生成&#xff0c;每个属性都有一个名称和值&#xff0c;他们都是字符串格式。属性被大量使用在Android系统中&#xff0c;用来记录系统设置或进程之间的信息交换。属性是在整个系统中全局可见的。每个进程可以get/set属性&#x…

【IMX6ULL项目】IMX6ULL下Linux实现产测工具框架

电子产品量产测试与烧写工具。这是一套软件&#xff0c;用在我们的实际生产中&#xff0c; 有如下特点&#xff1a; 1.简单易用&#xff1a; 把这套软件烧写在 SD 卡上&#xff0c;插到 IMX6ULL 板子里并启动&#xff0c;它就会自动测试各个模块、烧写 EMMC 系统。 工人只要按…

数据库系统理论——关系数据库标准语言SQL

文章目录 一、数据定义1、基本表的定义、删除与修改2、索引的建立于删除&#xff08;了解&#xff09; 二、数据查询&#xff08;会其中一种&#xff09;1、单表查询&#xff08;1&#xff09;这里出现重复元组&#xff0c;怎么处理&#xff1f;&#xff1f;&#xff08;2&…

渗透测试-信息收集

网络安全信息收集是网络安全领域中至关重要的一环&#xff0c;它涉及到对目标系统、网络或应用进行全面而细致的信息搜集和分析。这一过程不仅有助于理解目标网络的结构、配置和潜在的安全风险&#xff0c;还能为后续的渗透测试、风险评估和安全加固提供有力的支持。 在网络安…

单调栈问题

原理 单调栈的核心原理是&#xff1a;在栈内保持元素的单调性&#xff08;递增或递减&#xff09; 单调递增栈&#xff1a; 用于处理“下一个更小的元素”问题。当新元素比栈顶元素小或等于时&#xff0c;直接入栈&#xff1b;否则&#xff0c;一直从栈顶弹出元素&#xff0c…