news 2026/4/23 13:12:17

使用PCA、t-SNE和UMAP进行数据降维并应用贝叶斯分类器

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
使用PCA、t-SNE和UMAP进行数据降维并应用贝叶斯分类器

#t-SNE #UMAP #PCA #数据降维 #贝叶斯分类器 #多分类 1 分别利用PCA、t-SNE、UMAP对数据进行降维。 2 利用Bayesian分类器对降维后的数据进行训练、预测。 3 计算结果的混淆矩阵,对比请看图。 (MATLAB 代码+注释)

在数据科学中,降维技术是处理高维数据的重要手段,它可以帮助我们更好地理解数据的结构,同时减少计算复杂度。本文将介绍三种常见的降维技术:PCA(主成分分析)、t-SNE(t-分布随机邻域嵌入)和UMAP(均匀流形近邻投影),并使用贝叶斯分类器对降维后的数据进行分类。最后,通过混淆矩阵来比较不同降维方法的效果。

1. 数据降维
PCA(主成分分析)

PCA是一种线性降维技术,它通过找到数据的主要成分来降低数据的维度。PCA的目标是保留数据中的最大方差。

MATLAB代码:

% 加载数据 load fisheriris; X = meas; y = species; % 标准化数据 X_normalized = normalize(X); % 应用PCA降维到二维 [coeff,score,latent] = pca(X_normalized); reduced_data_pca = score(:,1:2); % 可视化PCA结果 figure; gscatter(reduced_data_pca(:,1), reduced_data_pca(:,2), y, [], [], [], 'filled'); title('PCA降维后的数据分布');
t-SNE

t-SNE是一种非线性降维技术,特别适用于高维数据的可视化。它能够很好地保留数据的局部结构。

MATLAB代码:

% 应用t-SNE降维到二维 tsneModel = tsne(X_normalized, 'NumDimensions', 2); reduced_data_tsne = tsneModel; % 可视化t-SNE结果 figure; gscatter(reduced_data_tsne(:,1), reduced_data_tsne(:,2), y, [], [], [], 'filled'); title('t-SNE降维后的数据分布');
UMAP

UMAP是一种最近提出的降维技术,它结合了t-SNE和非线性降维的优点,能够更好地保留数据的全局和局部结构。

MATLAB代码:

% 应用UMAP降维到二维 umapModel = umap.fit(X_normalized); reduced_data_umap = umapModel.transform(X_normalized); % 可视化UMAP结果 figure; gscatter(reduced_data_umap(:,1), reduced_data_umap(:,2), y, [], [], [], 'filled'); title('UMAP降维后的数据分布');
2. 贝叶斯分类器

贝叶斯分类器是一种基于概率的分类方法。在本例中,我们将使用MATLAB中的fitcnb函数来训练一个朴素贝叶斯分类器。

MATLAB代码:

% 划分训练集和测试集 cv = cvpartition(size(y,1), 'Holdout', 0.3); idx_train = cv.training; idx_test = cv.test; % 对每种降维后的数据进行分类 dims = [reduced_data_pca, reduced_data_tsne, reduced_data_umap]; titles = {'PCA', 't-SNE', 'UMAP'}; for i = 1:3 X_train = dims{i}(idx_train,:); y_train = y(idx_train,:); X_test = dims{i}(idx_test,:); y_test = y(idx_test,:); % 训练贝叶斯分类器 model = fitcnb(X_train, y_train); % 预测 y_pred = predict(model, X_test); % 计算混淆矩阵 C = confusionmat(y_test, y_pred); acc = sum(diag(C)) / sum(C(:)) * 100; figure; plotconfusion(C); title(sprintf('%s分类混淆矩阵(准确率=%.2f%%)', titles{i}, acc)); end
3. 结果分析

通过上述步骤,我们可以比较PCA、t-SNE和UMAP在降维后的分类效果。从混淆矩阵可以看出,每种降维方法在分类任务中的表现。尽管PCA是一种线性方法,但在某些情况下,它可能会表现得比非线性方法更好,这取决于数据的分布。

需要注意的是,降维后的结果可能会丢失一些信息,因此在实际应用中,需要根据具体数据和任务需求选择合适的降维方法。此外,贝叶斯分类器的性能也受到降维结果的影响,因此降维和分类器的选择需要综合考虑。

综上所述,本文通过PCA、t-SNE和UMAP三种降维方法对数据进行降维,再通过贝叶斯分类器进行分类,最终通过混淆矩阵比较了不同降维方法的效果。希望这篇博文能为你的数据降维和分类任务提供一些参考。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 20:11:53

医院挂号预约系统源码 Python+Django+Vue 前后分离 万字文档

一、关键词 医院挂号系统、预约挂号系统、医疗预约系统、就诊预约系统、门诊预约系统 二、作品包含 源码数据库万字设计文档PPT全套环境和工具资源本地部署教程 三、项目技术 前端技术: Html、Css、Js、Vue3.2、Element-Plus 后端技术:Python、Djang…

作者头像 李华
网站建设 2026/4/20 15:13:12

谷歌推出基准测试检验AI是否“靠谱”:Gemini 3 Pro准确率仅69%

自从六个月前发布Chai-2以来,整个AI领域都在飞速前进,但抗体设计领域却一直停留在「简化片段」阶段(单结构域、scFv等),没人真正搞定临床上真正需要的完整全长单克隆抗体(full-length mAb)。从头…

作者头像 李华
网站建设 2026/4/17 3:28:16

物流管理系统源码 Python+Django+Vue 前后分离 万字文档

一、关键词物流管理系统、物流系统、货运系统、配送系统、仓储系统二、作品包含源码数据库万字设计文档PPT全套环境和工具资源本地部署教程三、项目技术前端技术:Html、Css、Js、Vue、Element-ui、Axios后端技术:Python、Django2.0、PyMySQL四、运行环境…

作者头像 李华
网站建设 2026/4/5 23:27:51

校内运动场地预约系统源码 Python+Django+Vue 前后分离

一、关键词运动场地预约系统、校内场地管理系统、体育场地预约系统、场地租赁系统、运动场馆预约平台二、作品包含源码数据库全套环境和工具资源本地部署教程三、项目技术前端技术:Html、Css、Js、Vue2.6、Element-ui后端技术:Python、Django、PyMySQL四…

作者头像 李华
网站建设 2026/4/19 7:50:41

在moodle课程中添加作业

一、在moodle中添加课程 向moodle学习系统中添加课程及课程内容的方法,可以参考半壶清水的另一篇文章《在moodle学习系统中添加网页版课程内容》: https://mp.csdn.net/mp_blog/creation/editor/155982443 二、在moodle中添加作业 1、在指定课程内容中…

作者头像 李华
网站建设 2026/4/15 15:50:00

img2img-turbo部署决策指南:如何选择最优AI图像转换方案

img2img-turbo部署决策指南:如何选择最优AI图像转换方案 【免费下载链接】img2img-turbo 项目地址: https://gitcode.com/GitHub_Trending/im/img2img-turbo 在AI图像转换技术快速发展的今天,img2img-turbo作为高效的单步推理模型,为…

作者头像 李华