人工稚能之sklearn数据降维

sklearn-降维算法 sklearn中的降维算法 主成分分析PCA class sklearn.decomposition.PCA (n_components=None, copy=True, whiten=False, svd_solver=’auto’, tol=0.0, iterated_power=’auto’, random_state=None) 特征选择是从已存在的特征中选取携带信息最多的,选完之后的特征依然具有可解释性,我们依然知道这个特 征在原数据的哪个位置,代表着原数据上的什么含义。 而PCA,是将 阅读详情

640?wx_fmt=jpeg


机器学习模型拟合的输入数据往往是多维数据,这个维度可能会非常庞大。比如统计一篇文章中的单词频率,就可以把文章看成单词的向量。而单词的数量又是非常庞大,每个单词都是一个维度,这样大维度的数据在拟合时会非常耗费计算资源,也就是说出现了维度灾难。


遇到维度灾难,我们一般都会使用降维算法来压缩数据量,以减少模型训练消耗的存储资源和计算资源。


对于维度大的数据,维度之间往往会存在相关性,这种相关性导致数据产生了冗余。比如两条信息,一条说这个人是个男的,第二条说这个人不是女的,那这两条信息就是相关的,就可以灭掉一条。降维的作用就是消除这种冗余信息。降维还可以用来剔去信息量小的信息,来实现信息的压缩。比如图片就可以使用降维算法来实现压缩。

640?wx_fmt=jpeg

一种比较常用的降维算法是PCA算法【主成分分析】,它的原理是数学上的SVD矩阵分解算法。具体的公式这里不能细说,因为我也不想吓跑一半读者。

640?wx_fmt=jpeg

打个比方说一张女人图片,我们如何判定这个女人是不是美女呢。我们会看比较关键的一些特征,比如说脸好不好看,胸好不好看,屁股怎么样,腿怎么样,至于衣服上是某个花纹还是手臂上有一个小痔还是,这些特征我们都是不关心的,就可以过滤掉。我们关心的是主成分,也就是对结果贡献系数较大的特征。SVD算法的作用就是来告诉你哪些特征是重要的,有多重要,哪些特征是不重要的,是可以忽略的。


接下来我们使用sklearn提供的TruncatedSVD模块来对美女图片进行压缩。


首先我们使用matplotlib显示一张美女png图片,png图片的格式非常简单,每一个像素有三个维度的颜色值RGB,整个图片就是一个「height x width x 3」维的矩阵。


我们先使用matplotlib显示一下美女图片

# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
import matplotlib.image as img

# 读入图片矩阵600*900*3
img_matrix = img.imread('beauty.png')

plt.imshow(img_matrix)
plt.show()

640?wx_fmt=jpeg

接下来我们进行SVD转换,先将图像RGB三个通道数据分别转换到特征空间,再从特征空间还原会通道数据,然后将三个处理后的通道数据合并成图像数据显示出来,对比和原始图像的差异。

# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.image as img
from sklearn.decomposition import TruncatedSVD

# 加载png数据矩阵
img_array = img.imread('beauty.png')
shape = img_array.shape

# 高度、宽度、RGB通道数=3
height, width, channels = shape[0], shape[1], shape[2]

# 转换成numpy array
img_matrix = np.array(img_array)

# 存储RGB三个通道转换后的数据
planes = []

# RGB三个通道分别处理
for idx in range(channels):    # 提取通道    plane = img_matrix[:, :, idx]    # 转成二维矩阵    plane = np.reshape(plane, (height, width))    # 保留10个主成分    svd = TruncatedSVD(n_components=10)    # 拟合数据,进行矩阵分解,生成特征空间,剔去无关紧要的成分    svd.fit(plane)    # 将输入数据转换到特征空间    new_plane = svd.transform(plane)    # 再将特征空间的数据转换会数据空间    plane = svd.inverse_transform(new_plane)    # 存起来    planes.append(plane)

# 合并三个通道平面数据
img_matrix = np.dstack(planes)

# 显示处理后的图像
plt.imshow(img_matrix)

plt.show()

保留10个主成分效果图,马赛克有点严重,能看得出轮廓,只是看不清人脸了

640?wx_fmt=jpeg

保留50个主成分,有点像老式彩电的效果,差不多能辨识出是个美女了

640?wx_fmt=jpeg

保留100个主成分,基本很清晰了

640?wx_fmt=jpeg

那这个图像在不同的主成分数量下的压缩比例大概是多少呢?

这个例子中图像的大小是600 x 900,压缩后变成了两个矩阵,一个矩阵是600 x n_components,另一个矩阵是ncomponents x 900,还有其它一些微量的变量信息。那这个压缩比大约是 n_components x 15 / 5400,那么当保留50个主成分时,压缩率约为14%。当保留100个主成分时,压缩率约为28%。


阅读相关文章,关注公众号【码洞】

机器学习学习笔记(四)之特征降维 特征降维 降维是指在某些限定的条件下,降低随机变量(特征)的个数,得到一组‘不相关’的主变量的过程 效果:特征与特征之间不相关 1、降维的两种方式 特征选择 主成分分析 2、什么是特征选择? 定义:数据中包含冗余或相关变量(或称特征、属性、指标等),旨在从原有特征中找出主要特征。 方法: Filter(过滤式):主要探究特征本身特点、特征与特征和目标值之间关联 方差选择法:低方差特征过滤 相关系数 Embedded(嵌入式):算法自动选择特征(特征与目标值之间的关联) 决策树:信息熵、信息增熵 阅读详情

相关推荐

sklearn数据集使用全解析:从入门到实战

Scikit-learn(简称sklearn) 是Python中最受欢迎的机器学习库之一,基于NumPy、SciPy和Matplotlib构建,封装了分类、回归、聚类、降维等算法。其核心优势在于简洁的API设计和丰富的内置数据集,开发者只需几行代码即可完成数据加载、模型训练与评估。本文将深入解析sklearn数据集的使用方法,涵盖数据加载、生成、预处理及实战案例。

小李独爱秋的博客 2467

使用Sklearn学习降维算法PCA和SVD

1,概述 1.1,什么是维度? 我们先来解释一下维度的概念。 对于数组和Series来说,维度就是功能shape返回的结果,shape中返回了几个数字,就是几维。索引以外的数据,不分行列的叫一维(此时shape返回唯一的维度上的数据个数),有行列之分叫二维(shape返回行x列),也称为表。一张表最多二维,复数的表构成了更高的维度。当一个数组中存在2张3行4列的表时,shape返回的是(更高维,行,列)。当数组中存在2组2张3行4列的表时,数据就是4维,shape返回(2,2,3,4)。 数组中的每

理科男同学 6403

降维不是删特征,而是重构数据表达空间

降维(Dimensionality Reduction)是机器学习中处理高维数据的基础技术,其核心原理是在可控信息损失下,将原始高维空间映射至低维流形,以提升计算效率、增强可视化可解释性并强化模型抗噪与泛化能力。它并非简单删除冗余列,而是通过线性(如PCA、LDA)或非线性(如UMAP、t-SNE)方法重构数据内在结构,广泛应用于用户行为分析、工业缺陷检测、金融风控等场景。尤其在特征工程验证、边缘AI部署和业务可解释性需求强烈的任务中,降维成为连接算法输出与真实决策的关键桥梁。本文聚焦降维的本质理解、方法选

weixin_34050005的博客 390

sklearn入门——降维算法

概述

weixin_47037146的博客 1257

【项目案例】前后端分离项目 【Web图书管理系统 】SpringBoot + Vue + Element UI + Mysql

Web图书管理系统

激流丶的博客 5397

k8s集群部署私有镜像仓库

本文介绍了在Kubernetes集群中部署私有镜像仓库的完整方案。使用registry:2镜像创建Deployment,通过NodePort(30500)暴露服务,并采用hostPath(/data/registry)实现数据持久化。部署过程包括节点标记、YAML配置、资源创建及验证步骤,同时提供了Docker和Containerd两种环境下的详细使用方法,包括配置不信任私有仓库、镜像推送/拉取操作指南。该方案特别适合开发测试环境,为团队提供便捷的本地镜像管理能力。

weixin_42728286的博客 893

Sklearn - 特征降维

Matrix Decomposition Feature Selection 一、利用特征提取进行特征降维 decomposition 1、PCA 主成分 2、对线性不可分数据进行特征降维 核机制 3、通过最大化类间可分性进行特征降维 4、使用矩阵分解进行特征降维 5、对稀疏矩阵进行特征降维 二、使用特征选择 进行降维 feature_selection 1、数值型特征方差的阈值化 2、二值特征的方差阈值化 3、处理高度相关性的特征 4、删除与分类任务不相关的特征 1)分类类型 2)数值型特征 3)Sele

AI工程化、开源分享、文档翻译、代码笔记 968

uniapp串口通信实战:从零搭建物联网设备控制App(附完整代码)

本文详细介绍了如何使用Uniapp实现串口通信,从零搭建物联网设备控制App。内容涵盖环境配置、串口初始化、数据收发、错误处理等核心功能,并提供了完整的代码示例,帮助开发者快速掌握跨平台串口通信技术,适用于智能农业、工业自动化等物联网场景。

weixin_30369041的博客 597

人工智障学习笔记——机器学习(13)LLE降维

一.概念 LLE:Locally linear embedding(局部线性嵌入算法)是一种非线性降维算法,它能够使降维后的数据较好地保持原有流形结构。LLE可以说是流形学习方法最经典的工作之一。和传统的PCA,LDA等关注样本方差的降维方法相比,LLE关注于降维时保持样本局部的线性特征,由于LLE在降维时保持了样本的局部特征。 二.算法 LLE算法认为每一个数据点都可以由其近邻点的

九日王朝 1万+

AI 编程助手新玩法:用 Claude Code 一键调用国产大模型(DeepSeek/Kimi/GLM 对比)

本文深入评测了Claude Code与三大国产大模型(DeepSeek、Kimi、智谱GLM)的集成效果,详细对比了它们在代码生成质量、响应速度和特殊场景支持度等方面的差异。通过实测数据和实战技巧,帮助开发者选择最适合的AI编程助手组合,提升开发效率。

weixin_30955617的博客 488

深入Luckfox Pico的Web界面:从Angular前端到CGI后端的RV1106 IPCWeb全栈解析

本文深入解析了基于瑞芯微RV1106芯片的Luckfox Pico设备上,IPCWeb全栈解决方案的架构与部署。详细介绍了如何通过SDK编译配置,将现代Angular前端框架与高效的C++ CGI后端结合,并利用nginx和FastCGI在嵌入式环境中构建稳定、高性能的Web管理界面,为物联网设备开发提供了完整的实战参考。

3a9bq4r8t2y的博客 277

人工稚能之sklearn分类

分类算法和聚类比较类似,都是将输入数据赋予一个标签类别。区别是分类算法的分类是预先确定的,有明确含义的。而聚类的标签是从输入数据本身的分布中提取出来的一种抽象的类别。聚类...

shellquery的博客 98

[QMT和ptrade量化交易小白入门]-120、卖出深度虚值期权的三重过滤策略

本专栏主要是介绍QMT和ptrade的基础用法,常见函数,写策略的方法,也会分享一些量化交易的思路,大概会写200篇左右。QMT的相关资料较少,在使用过程中不断的摸索,遇到了一些问题,记录下来和大家一起沟通,共同进步。

木头大左的博客 285

【sklearn】K-Means聚类与PCA降维实践 - 用户信用分群和分析

目的 本实验使用电信用户的通信行为数据集,进行用户信用分群和分析。由于是没有标注的训练样本,使用降维和聚类等无监督方法将用户进行分群,然后对不同群体数据进行人工分析,确定群体的信用行为特点。 数据 本实验中数据集来自开源的电信用户的通信行为数据集,共30000条数据,7个字段:入网时间、套餐价格、每月流量、每月话费、每月通话时长、欠费金额、欠费月份数。 实现代码 import pand...

秋天 7104

如何用Python打造PubMed API客户端:科研文献检索自动化实践

PubMed提供了官方的Entrez E-utilities API接口,支持程序化检索文献,但直接调用API需处理请求重试、参数封装、数据解析等问题。批量获取文献ID及结构化详情(标题、作者、DOI等)内置重试机制,应对网络波动或API限流统一数据输出格式,便于后续分析(如文献计量、AI文本处理)灵活适配不同检索需求(如指定数据库、结果数量)本文实现的PubMed API客户端,通过封装API请求、重试机制、数据解析,让科研文献检索从“手动点击”变为“代码自动化”。

ASKCOS博客 359

mpv 源码深度解析:从 MPlayer 遗产到现代媒体播放器架构

做减法优于做加法:不值得维护的功能就移除(DVD 菜单、流缓存等)单线程事件驱动:核心逻辑在单线程中运行,通过 dispatch 队列处理并发分离关注点:demuxer 线程、VO 线程、脚本线程各司其职质量优先:使用 GPU 着色器而非固定功能硬件,默认软件解码(更可靠)可嵌入性:libmpv API 让 mpv 可以作为库嵌入其他应用mpv 是一个用纯 C 实现的、工程质量极高的媒体播放器。它的代码库展示了一个事实:C 语言完全可以通过良好的架构设计来实现复杂的多媒体系统。

世界那么大,我想去看看~【随心更新,看世界去了😄】 93

人工智障学习笔记——机器学习(12)LDA降维

一.概念 LDA:Linear Discriminant Analysis (也有叫做Fisher Linear Discriminant)。与PCA一样,是一种线性降维算法。不同于PCA只 会选择数据变化最大的方向,由于LDA是有监督的(分类标签),所以LDA会主要以类别为思考因素,使得投影后的样本尽可能可分。它通过在k维空间选择一个投影超平面,使得不同类别在该超平面上的投影之间的距离尽可能近

九日王朝 1万+

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

数据降维实战指南:从维度灾难到业务可解释性

数据降维是应对高维特征导致的计算膨胀、泛化下降与解释失效等工程痛点的核心技术。其本质并非数学压缩,而是通过线性(如PCA)或非线性(如UMAP)映射,在保留关键判别信息的前提下,重建数据的低维语义结构。技术价值在于平衡模型性能、推理效率与业务可理解性——例如用主成分载荷图锚定‘客户活跃度’,或借UMAP可视化验证故障聚类。典型应用场景覆盖实时推荐、风控建模、IoT异常检测及监管合规报告。本文聚焦工业级落地中的预处理校准、方法选型逻辑与三重效果验证,深度融合Data Science实践与业务语义解耦。

weixin_30825199的博客 512

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Python数据降维方法:从PCA到t-SNE的全面解析

本文系统介绍了数据降维的核心概念、常用方法及应用场景,旨在帮助读者理解不同降维技术的原理和适用性。主要内容包括: 降维概述:解释了数据降维的定义、目标和分类(线性与非线性降维) 线性降维方法: PCA(主成分分析):通过正交变换保留最大方差信息 LDA(线性判别分析):有监督方法,最大化类间可分性 SVD(奇异值分解):矩阵分解技术,应用于推荐系统等 非线性降维方法: t-SNE:适合高维数据可视化,保持局部结构 UMAP:基于流形理论,性能优于t-SNE 自编码器:基于神经网络的深度学习方法 方法对比:提

YunYingLiang的博客 176

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

人工智障学习笔记——机器学习(11)PCA降维

一.概念 Principal Component Analysis(PCA):主成分分析法,是最常用的线性降维方法,它的目标是通过某种线性投影,将高维的数据映射到低维的空间中表示,即把原先的n个特征用数目更少的m个特征取代,新特征是旧特征的线性组合。并期望在所投影的维度上数据的方差最大,尽量使新的m个特征互不相关。从旧特征到新特征的映射捕获数据中的固有变异性。以此使用较少的数据维度,同时保留住较

九日王朝 7048

数据降维实战指南:从维度灾难到业务可解释的七步法

在机器学习与数据科学中,高维数据常引发计算膨胀、模型泛化失效和业务解释失语等核心问题,这本质上是‘维度灾难’在工程落地中的真实映射。其原理源于高维空间距离失效、特征冗余加剧及信息熵稀释,技术价值在于提升模型效率、增强鲁棒性并支撑可审计决策。典型应用场景覆盖用户行为分析、风控建模、IoT设备预测及医疗影像辅助诊断等需平衡精度与可解释性的工业级任务。本文聚焦数据工程师视角,融合PCA、UMAP与特征选择等主流方法,强调维度语义解耦、重建误差验证与业务指标对齐,避免陷入纯数学压缩误区,真正实现降维结果可复现、可诊

weixin_33937913的博客 600

python sklearn工具包_Sklearn工具包及模型评估

一、Sklearn工具包介绍scikit-learn,又写作sklearn,是一个开源的基于python语言的机器学习工具包。它通过NumPy, SciPy和Matplotlib等python数值计算的库实现高效的算法应用,并且涵盖了几乎所有主流机器学习算法。1、常用模块Sklearn中常用模块:分类(Classification)、回归(Regression)、聚类(Clustering)、降维...

weixin_32349223的博客 1949
上一篇: 人工稚能之sklearn分类
下一篇: 基于Netty实现Redis协议的编码解码器
码洞
博客等级 码龄10年 41粉丝 137原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值