news 2026/6/14 22:52:19

使用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/6/15 9:11:28

批量修正异常道头值

petrel地震、RE、气藏教程带数据最近项目上遇到一个头疼的气藏反演问题,折腾了三天Petrel地震解释模块。今天正好把处理流程整理成带数据的实战教程,顺手分享几个储层工程师常用的Python脚本,特别是遇到RE(Reservoir Engineering&…

作者头像 李华
网站建设 2026/6/15 13:48:38

最新版小红书私信协议

更新时间:2025-12-17使用私信协议可实现群发私信,懂的都懂,就不多说了测试给陌生人发送私信:

作者头像 李华
网站建设 2026/6/15 13:53:19

国内首个!千问APP接入万相2.6,实现“角色合拍”能力

来源:维度网-全球简讯 12月16日,阿里千问APP同步上线最新视频生成模型万相2.6,并向所有用户免费开放。万相2.6是国内首个支持角色扮演功能的视频模型,具备音画同步、多镜头生成及声音驱动等多种功能。基于模型核心能力&#xff0…

作者头像 李华
网站建设 2026/6/15 10:41:59

.NET 实现雪花算法:高效生成分布式唯一 ID

雪花算法(Snowflake)Twitter 开源的一种分布式 ID 生成算法能够生成全局唯一的 64 位整数 ID。在分布式系统中,唯一 ID 的生成至关重要,它广泛应用于数据库主键、消息队列、订单号等场景。具体实现可参考NetCoreKevin中的Kevin.Sn…

作者头像 李华
网站建设 2026/6/15 4:06:39

LFM线性调频和脉冲压缩的理论总结与仿真

一、背景使用雷达探测物体时,雷达发射电磁波,电磁波撞到物体后反射回来,雷达接收回波信号来判断物体的位置。想象一下,如果雷达发出的信号非常弱,信号还没有到达物体处或者回波还没回来就衰减差不多了,雷达…

作者头像 李华