主成分分析法 (PCA) 用于数据可视化实验 -- Matlab版

第一步:下载数据集。

https://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/multiclass.html#pendigits

 

第二步:改变数据格式。

注:此数据集的各特征值均为像素,即属于同一量纲,故无需归一化步骤。

原格式为:8 1:88 2:92 3:2 4:99 5:16 6:66 7:94 8:37 9:70 12:24 13:42 14:65 15:100 16:100

改为:88 92 2 99 16 66 94 37 70 0 0 24 42 65 100 100 8

Java代码:

 

public class dataformat {public static void main(String[] args) throws IOException{String filename = "pendigits.t";String outfilename = "pendigits";int demension = 16;try(Scanner in = new Scanner(new FileInputStream(filename));PrintWriter out = new PrintWriter(outfilename)){String line;while( in.hasNextLine()){line = in.nextLine();//按空格将数据切分String[] subComponent = line.trim().split(" ");//data用于记录对应维度下的特征值String[] data = new String[demension];//第0个是类标,所以从1开始,构造样例的全部特征值for (int i = 1; i < subComponent.length; ++i){String[] kv = subComponent[i].trim().split(":");//将对应维度下的特征值赋值。data[Integer.parseInt(kv[0])-1] = kv[1];}//sb用来构造一行样例StringBuilder sb = new StringBuilder();for (int i = 0; i < demension; ++i){if (data[i] != null)sb.append(data[i]+" ");elsesb.append("0 "); //如果对应维度下的字符串为null,说明为0值。}sb.append(subComponent[0].trim());//末尾加类标out.println(sb.toString());	//写文件}}}
}


第三步:Matlab作图。

将处理好的文件pendigits加入MATLAB路径;

新建脚本pcaVisual.m,代码如下:

load pendigits; % 加载数据集,前提是pendigits文件在MATLAB路径下
[m,n]=size(pendigits); % 获得pendigts的行数m,列数n
[pc, score, latent, tsquare]=pca(pendigits(:,1:n-1));% pca是主成分分析算法,参数是需要降维的矩阵pendigits(:,1:n-1)——除去类标列。
% 返回的结果:
% pc是(n-1)*(n-1)系数矩阵,用它将pendigits(:,1:n-1)转换为score
% score是转换之后的特征值,大小为m*(n-1),按latent降序排列,按需取前k列,此处我们只需取前三列。
% latent:是一维列向量,大小为(n-1)*1,每一个数据是对应score里相应维的贡献率,降序排列plot3(0,0,0); % plot(0,0)可用于展示2维图形,但用旋转按钮进行拖动的话,可以看到,其实际就是3维。
hold on;% 根据样例的列表来画图
for i=1:mswitch pendigits(i,n)case 0plot3(score(i,1),score(i,2),score(i,3),'y*');case 1plot3(score(i,1),score(i,2),score(i,3),'m*');case 2plot3(score(i,1),score(i,2),score(i,3),'c*');case 3plot3(score(i,1),score(i,2),score(i,3),'r*');case 4plot3(score(i,1),score(i,2),score(i,3),'g*');case 5plot3(score(i,1),score(i,2),score(i,3),'b*');case 6plot3(score(i,1),score(i,2),score(i,3),'w*');case 7plot3(score(i,1),score(i,2),score(i,3),'k*');case 8plot3(score(i,1),score(i,2),score(i,3),'kd');otherwiseplot3(score(i,1),score(i,2),score(i,3),'kv');end
end

 

三维立体图:

 

点击箭头所指按钮可以三维旋转来观察其结构。

 

二维平面图:

 

 

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

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

相关文章

机器学习12推荐系统

推荐系统(Recommender Systems) 推荐系统根据浏览用户过去买过什么书&#xff0c;或过去评价过什么电影来判断并推荐新产品给用户。 这些系统会为像亚马逊和网飞这样的公司带来很大一部分收入。 因此&#xff0c;对推荐系统性能的改善&#xff0c;将对这些企业的有实质性和…

使用Apriori进行关联分析(二)

使用Apriori进行关联分析&#xff08;二&#xff09;书接上文&#xff08;使用Apriori进行关联分析&#xff08;一&#xff09;&#xff09;&#xff0c;介绍如何挖掘关联规则。发现关联规则我们的目标是通过频繁项集挖掘到隐藏的关联规则。所谓关联规则&#xff0c;指通过某个…

数学笔记3——导数3(隐函数的导数)

数学笔记3——导数3&#xff08;隐函数的导数&#xff09;幂函数的扩展形式f(x) xn的导数&#xff1a;f’(x) nxn-1&#xff0c;n是整数&#xff0c;该公式对f(x) xm/n, m,n 是整数同样适用。推导过程&#xff1a;什么是隐函数引自知乎&#xff1a;“如果方程F(x,y)0能确定y…

机器学习13大规模数据集

大型数据集的学习&#xff08;Learning With Large Datasets&#xff09; 如果我们有一个低方差的模型&#xff0c; 增加数据集的规模可以帮助你获得更好的结果。 我们应该怎样应对一个有 100 万条记录的训练集&#xff1f; 以线性回归模型为例&#xff0c;每一次梯度下降…

Java07多线程

14 多线程 操作系统的多任务&#xff08;multitasking&#xff09;&#xff1a;在同一时刻运行多个程序的能力。 多线程在较低的层次上扩展了多任务的概念&#xff1a;一个程序同时执行多个任务。 通常&#xff0c;每一个任务称为一个线程&#xff08;tread&#xff09;&…

MySQL字段拼接Concat

有时候&#xff0c;从数据库中拿出的数据并不是我们想要的格式&#xff0c;比如&#xff0c;有以下的vendors表 如果&#xff0c;想以 name (location)的格式展现出来&#xff0c;那么就要用到MySQL的Concat了。 Concat()拼接串&#xff0c;即把多个串连接起来形成一个较长的串…

使用pycharm调用模块后字体变灰 是什么原因呢?

使用pycharm调用模块后字体变灰 是什么原因呢&#xff1f;点击小灯泡提示出现以下内容&#xff1a;This inspection detects names that should resolve but dont. Due to dynamic dispatch and duck typing, this is possible in a limited but useful number of cases. Top-l…

操作系统01概述

第一章 概论 《Operating System Internals and Design Principles》 《Applied Operating System Concepts》 操作系统——裸机上的第一层软件&#xff0c;它是对硬件系统功能的首次扩充&#xff0c;填补人与机器之间的鸿沟。 1.1 操作系统与计算机同在 1.2 对操作系统的…

Linux re

正则表达式并不是一个工具程序&#xff0c;而是一个字符串处理的标准依据&#xff0c;如果想要以正则表达式的方式处理字符串&#xff0c;就得使用支持正则表达式的工具&#xff0c;例如grep、vi、sed、asw等。 注意&#xff1a;ls不支持正则表达式。 grep 正则表达式: 注意gr…

操作系统02进程管理Process_Description_and_Control

作业的基本概念&#xff1a;用户再一次计算过程中或一次事务处理过程中&#xff0c;要求计算机系统所做的工作的集合。 包含多个程序、多个数据、作业控制说明书 系统调用时操作系统提供给编程人员的唯一接口。 1、文件操作类&#xff1b; 2、进程控制类&#xff1b; 3、资…

蓝桥杯 方格填数(全排列+图形补齐)

方格填数 如下的10个格子 填入0~9的数字&#xff0c;同一数字不能重复填。要求&#xff1a;连续的两个数字不能相邻。&#xff08;左右、上下、对角都算相邻&#xff09; 一共有多少种可能的填数方案&#xff1f; 请填写表示方案数目的整数。注意&#xff1a;你提交的应该是一个…

操作系统03进程管理Process_Scheduling

2 Process Scheduling >Type of scheduling >Scheduling Criteria (准则) >Scheduling Algorithm >Real-Time Scheduling (嵌入式系统) 2.1 Learning Objectives By the end of this lecture you should be able to Explain what is Response Time 响应时间-…

skimage库需要依赖 numpy+mkl 和scipy

skimage库需要依赖 numpymkl 和scipy1、打开运行&#xff0c;输入cmd回车&#xff0c;输入python回车&#xff0c;查看python版本2、在https://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy 中&#xff0c;根据自己python版本下载需要的包 &#xff08;因为我的是python 2.7.13 …

操作系统04进程同步与通信

4.1 进程间的相互作用 4.1.1 进程间的联系资源共享关系相互合作关系临界资源应互斥访问。临界区&#xff1a;不论是硬件临界资源&#xff0c;还是软件临界资源&#xff0c;多个进程必须互斥地对它们进行访问。把在每个进程中访问临界资源的那段代码称为临界资源区。显然&#x…

oracle迁移到greenplum的方案

oracle数据库是一种关系型数据库管理系统&#xff0c;在数据库领域一直处于领先的地位&#xff0c;适合于大型项目的开发&#xff1b;银行、电信、电商、金融等各领域都大量使用Oracle数据库。 greenplum是一款开源的分布式数据库存储解决方案&#xff0c;主要关注数据仓库和BI…

CNN框架的搭建及各个参数的调节

本文代码下载地址&#xff1a;我的github本文主要讲解将CNN应用于人脸识别的流程&#xff0c;程序基于PythonnumpytheanoPIL开发&#xff0c;采用类似LeNet5的CNN模型&#xff0c;应用于olivettifaces人脸数据库&#xff0c;实现人脸识别的功能&#xff0c;模型的误差降到了5%以…

操作系统05死锁

进程管理4--Deadlock and Starvation Concurrency: Deadlock and Starvation 内容提要 >产生死锁与饥饿的原因 >解决死锁的方法 >死锁/同步的经典问题&#xff1a;哲学家进餐问题 Deadlock 系统的一种随机性错误 Permanent blocking of a set of processes that eith…

CNN tensorflow 人脸识别

数据材料这是一个小型的人脸数据库&#xff0c;一共有40个人&#xff0c;每个人有10张照片作为样本数据。这些图片都是黑白照片&#xff0c;意味着这些图片都只有灰度0-255&#xff0c;没有rgb三通道。于是我们需要对这张大图片切分成一个个的小脸。整张图片大小是1190 942&am…

数据结构01绪论

第一章绪论 1.1 什么是数据结构 数据结构是一门研究非数值计算的程序设计问题中&#xff0c;计算机的操作对象以及他们之间的关系和操作的学科。 面向过程程序数据结构算法 数据结构是介于数学、计算机硬件、计算机软件三者之间的一门核心课程。 数据结构是程序设计、编译…

css3动画、2D与3D效果

1.兼容性 css3针对同一样式在不同浏览器的兼容 需要在样式属性前加上内核前缀&#xff1b; 谷歌&#xff08;chrome&#xff09; -webkit-transition: Opera&#xff08;欧鹏&#xff09; -o-transition: Firefox&#xff08;火狐&#xff09; -moz-transition Ie -ms-tr…