机器学习第11天:降维

文章目录

机器学习专栏 

主要思想 

主流方法

1.投影

二维投射到一维

三维投射到二维

2.流形学习

一、PCA主成分分析

介绍

代码

二、三内核PCA

具体代码

三、LLE

结语


机器学习专栏 

机器学习_Nowl的博客-CSDN博客

主要思想 

介绍:当一个任务有很多特征时,我们找到最主要的,剔除不重要的 

主流方法

1.投影

投影是指找到一个比当前维度低的维度面(或线),这个维度面或线离当前所有点的距离最小,然后将当前维度投射到小维度上

二维投射到一维

三维投射到二维

2.流形学习

当然,当数据集投影后在低纬度上有重叠的时候,我们应该考虑别的方法

我们来看看被称为瑞士卷数据集的三维图

经过两种降维数据的处理,我们得到下面两幅二维数据可视化图 

我们可以看到,左边的数据 有很多重合的点,它使用的是投影技术,而右图就像将数据集一层层展开一样,这就是流形学习

我们接下来介绍三种常见的具体实现这些的降维方法

一、PCA主成分分析

介绍

pca主成分分析是一种投影降维方法

PCA主成分分析的思想就是:识别最靠近数据的超平面,然后将数据投影到上面

代码

这是一个最简单的示例,有一个两行三列的特征表x,我们将它降维到2个特征(n_components参数决定维度)

from sklearn.decomposition import PCAx = [[1, 2, 3], [3, 4, 5]]pca = PCA(n_components=2)
x2d = pca.fit_transform(x)print(x)
print(x2d)

 运行结果

二、三内核PCA

内核可以将实例隐式地映射到高维空间,这有利于模型寻找到数据的特征(维度过低往往可能欠拟合),其他的思想与PCA相同

具体代码

1.线性内核

特点: 线性核对原始特征空间进行线性映射,相当于没有映射,直接在原始空间上进行PCA。适用于数据在原始空间中是线性可分的情况。

import matplotlib.pyplot as plt
from sklearn.datasets import make_swiss_roll
from sklearn.decomposition import KernelPCA# 生成瑞士卷数据集
X, color = make_swiss_roll(n_samples=1000, noise=0.2, random_state=42)# 使用内核PCA将数据降为二维
kpca = KernelPCA(n_components=2, kernel='linear', gamma=0.1)
X_kpca = kpca.fit_transform(X)# 可视化降维后的数据
plt.scatter(X_kpca[:, 0], X_kpca[:, 1], c=color, cmap='viridis', edgecolor='k')
plt.title('Kernel PCA of Swiss Roll Dataset')
plt.show()

2.rbf内核

特点: RBF核是一种常用的非线性核函数,它对数据进行非线性映射,将数据映射到高维空间,使得在高维空间中更容易分离。gamma参数控制了映射的“尺度”或“平滑度”,较小的gamma值导致较远的点对结果有较大的贡献,产生更平滑的映射,而较大的gamma值使得映射更加局部化。

import matplotlib.pyplot as plt
from sklearn.datasets import make_swiss_roll
from sklearn.decomposition import KernelPCA# 生成瑞士卷数据集
X, color = make_swiss_roll(n_samples=1000, noise=0.2, random_state=42)# 使用内核PCA将数据降为二维
kpca = KernelPCA(n_components=2, kernel='rbf', gamma=0.04)
X_kpca = kpca.fit_transform(X)# 可视化降维后的数据
plt.scatter(X_kpca[:, 0], X_kpca[:, 1], c=color, cmap='viridis', edgecolor='k')
plt.title('Kernel PCA of Swiss Roll Dataset')
plt.show()

3.sigmoid内核

特点: Sigmoid核也是一种非线性核函数,它在数据上执行类似于双曲正切(tanh)的非线性映射。它对数据进行映射,使其更容易在高维空间中分离。gamma参数和coef0参数分别控制了核函数的尺度和偏置。

import matplotlib.pyplot as plt
from sklearn.datasets import make_swiss_roll
from sklearn.decomposition import KernelPCA# 生成瑞士卷数据集
X, color = make_swiss_roll(n_samples=1000, noise=0.2, random_state=42)# 使用内核PCA将数据降为二维
kpca = KernelPCA(n_components=2, kernel='sigmoid', gamma=0.04)
X_kpca = kpca.fit_transform(X)# 可视化降维后的数据
plt.scatter(X_kpca[:, 0], X_kpca[:, 1], c=color, cmap='viridis', edgecolor='k')
plt.title('Kernel PCA of Swiss Roll Dataset')
plt.show()

三、LLE

局部线性嵌入(Locally Linear Embedding,LLE)是一种非线性降维算法,用于保留数据流形结构。

以下是使用LLE展开瑞士卷数据集的代码

import matplotlib.pyplot as plt
from sklearn.datasets import make_swiss_roll
from sklearn.manifold import LocallyLinearEmbedding# 生成瑞士卷数据集
X, color = make_swiss_roll(n_samples=1000, noise=0.2, random_state=42)# 使用LLE将数据降为二维
lle = LocallyLinearEmbedding(n_neighbors=12, n_components=2, random_state=42)
X_lle = lle.fit_transform(X)# 可视化降维后的数据
plt.scatter(X_lle[:, 0], X_lle[:, 1], c=color, cmap='viridis', edgecolor='k')
plt.title('LLE of Swiss Roll Dataset')
plt.show()

结语

降维的方法不止这几种,重要的是我们要理解为什么要降维——减少不重要的特征,同时也能加快模型的训练速度

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

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

相关文章

CTF靶场搭建及Web赛题制作与终端docker环境部署

♥ ♡ ♥ ♡ ♥ ♡ ♥ ♡ ♥ ♡ ♥ ♡ ♥ ♡ ♥ ♡ ♥ ♡ ♥ ♡ ♥ ♡ ♥ ♡ ♥ ♡ ♥ ♡ ♥ ♡ ♥ ♡ ♥ ♡ ♥ ♡ ♥ ♡ ♥ ♡ ♥ ♡ ♥ ♡ ♥ ♡ ♥ 写在前面 ╔═══════════════════════════════════════════════════…

Python爬取京东商品销售数据进行数据分析示例代码,以口红为例

文章目录 一、准备工作驱动安装模块使用与介绍 二、流程解析三、完整代码四、效果展示关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Python工具包②Python实战案例③Python小游戏源码五、面试资…

【电路笔记】-电流源

电流源 文章目录 电流源1、概述1.1 理想电流源1.2 实际电流源1.3 连接规则 2、依赖电流2.1 压控电流源2.2 电流控制电流源 3、总结 本文为前面文章 电压源的延续,我们将在本文介绍电流源。 与电压源的情况类似,我们将首先介绍理想电流源的概念&#xff…

【数据结构】树的基本概念 | 入门树以及二叉树必熟知

树的学习过程中,二叉树比较重要,但是在学习二叉树之前,得先需要了解到一些数的概念。 树的定义 树是一种非线性的数据结构,它是由 n(n > 0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它…

BTS-GAN:基于MRI和条件对抗性网络的乳腺肿瘤计算机辅助分割系统

BTS-GAN: Computer-aided segmentation system for breast tumor using MRI and conditional adversarial networks BTS-GAN:基于MRI和条件对抗性网络的乳腺肿瘤计算机辅助分割系统背景贡献实验方法Parallel dilated convolution module(并行扩展卷积模块…

tp8 使用rabbitMQ(1)简单队列

php8.0 使用 rabbitmq 要使用 3.6版本以上的&#xff0c; 并且还要开启 php.ini中的 socket 扩展 php think make:command SimpleMQProduce //创建一个生产者命令行 php think make:command SimpleMQConsumer //创建一个消费者命令行 生产者代码 <?php declare (strict_ty…

为何设计师都在用这个原型样机资源网站?

谈论原型样机素材模板&#xff0c;这个话题对设计师来说如同老朋友一般熟悉。设计师们在创作完毕后&#xff0c;为了更淋漓尽致地展示他们的设计成果&#xff0c;通常会将其放置在真实的样机素材模板中。这种原型样机素材可以让设计作品迅速且清晰地呈现在真实环境中。找到一个…

java游戏制作-飞翔的鸟游戏

一.准备工作 首先创建一个新的Java项目命名为“飞翔的鸟”&#xff0c;并在src中创建一个包命名为“com.qiku.bird"&#xff0c;在这个包内分别创建4个类命名为“Bird”、“BirdGame”、“Column”、“Ground”&#xff0c;并向需要的图片素材导入到包内。 二.代码呈现 …

【每日一题】2216.美化数组的最少删除数-2023.11.21

题目&#xff1a; 2216. 美化数组的最少删除数 给你一个下标从 0 开始的整数数组 nums &#xff0c;如果满足下述条件&#xff0c;则认为数组 nums 是一个 美丽数组 &#xff1a; nums.length 为偶数对所有满足 i % 2 0 的下标 i &#xff0c;nums[i] ! nums[i 1] 均成立 …

【Vue】自定义指令

hello&#xff0c;我是小索奇&#xff0c;精心制作的Vue系列持续发放&#xff0c;涵盖大量的经验和示例&#xff0c;如果对您有用&#xff0c;可以点赞收藏哈~ 自定义指令 自定义指令就是自己定义的指令&#xff0c;是对 DOM 元素进行底层操作封装 ,程序化地控制 DOM&#xff…

【开源】基于Vue.js的高校实验室管理系统的设计和实现

项目编号&#xff1a; S 015 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S015&#xff0c;文末获取源码。} 项目编号&#xff1a;S015&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容2.1 实验室类型模块2.2 实验室模块2.3 实…

2023 最新 PDF.js 在 Vue3 中的使用(长期更新)

因为自己写业务要定制各种 pdf 预览情况&#xff08;可能&#xff09;&#xff0c;所以采用了 pdf.js 而不是各种第三方封装库&#xff0c;主要还是为了更好的自由度。 一、PDF.js 介绍 官方地址 中文文档 PDF.js 是一个使用 HTML5 构建的便携式文档格式查看器。 pdf.js 是社区…

ABB机 器 人 操 作 培 训

目 录 1 培训手册介绍 ---------------------------------------------2 2 系统安全与环境保护 ---------------------------------------------3 3 机器人综述 ---------------------------------------------5 4 机器人示教 --------------------------------------------12…

自动解决IP冲突的问题 利用批处理更改末位IP循环+1直到网络畅通为止 解放双手 事半功倍

好久没出来写点什么了&#xff0c;难道今天有点时间&#xff0c;顺便把这两天碰到的问题出个解决方法吧。 这几天去客户那儿解决网络问题&#xff0c;因为客户的网络是固定的静态IP&#xff0c;因为没做MAC绑定&#xff0c;IP固定在本地电脑上&#xff0c;只要上不了网&#xf…

微信小程序面试题【100道】

文章目录 小程序面试题100问前言一、技术性问题1.有哪些参数传值的方法2.小程序修改数据值与Vue和React有什么差异3.如何实现下拉刷新与上拉加载4.bindtap和catchtap的区别是什么5.小程序有哪些导航API&#xff0c;它们各自的应用场景与差异区别是什么6.小程序中如何使用第三方…

python爬虫扣代码案例:某智能商业分析平台

声明&#xff1a; 该文章为学习使用&#xff0c;严禁用于商业用途和非法用途&#xff0c;违者后果自负&#xff0c;由此产生的一切后果均与作者无关 一、找出需要加密的参数 js运行 atob(‘aHR0cHM6Ly93d3cucWltYWkuY24vcmFuaw’) 拿到网址&#xff0c;F12打开调试工具&#…

拆解:淘宝客新玩法之微信淘礼金创建怎么做

最近看到一种新的淘宝客玩法&#xff0c;迫不及待的想分享给大家。微信公众号查券大家都不陌生&#xff0c;也有不少人都在做这个。最近看到有人在做微信公众号创建淘礼金。之所以说这个玩法新是因为目前大多数淘客还在做返利。返利有周期长、提现有门槛等痛点。 微信公众号创建…

BW4HANA 从头到脚 概念详解 ---- 持续更新中

1. 理解BW4HANA是干嘛的 好歹干了这么久的活了&#xff0c;从当初的啥也不懂到现在感觉啥都知道点&#xff0c;虽然知道的有限&#xff0c;但是也不是小白。渐渐的也知道了SAP开发的一些逻辑。本来咱是想当个BW的大牛的。但是现在感觉这条船要沉了是怎么回事。个人才稍微摸到点…

信息系统的安全保护等级的五个级别

信息系统的安全保护等级分为五级&#xff1a;第一级为自主保护级、第二级为指导保护级、第三级为监督保护级、第四级为强制保护级、第五级为专控保护级。 法律依据&#xff1a;《信息安全等级保护管理办法》第四条 信息系统的安全保护等级分为以下五级&#xff1a;   &#…

Python + Docker 还是 Rust + WebAssembly?

在不断发展的技术世界中&#xff0c;由大语言模型驱动的应用程序&#xff0c;通常被称为“LLM 应用”&#xff0c;已成为各种行业技术创新背后的驱动力。随着这些应用程序的普及&#xff0c;用户需求的大量涌入对底层基础设施的性能、安全性和可靠性提出了新的挑战。 Python 和…