主成分分析法 (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,一经查实,立即删除!

相关文章

后端视角下的前端框架之Vue.js初探

背景 作为常年搞后端的自己来说&#xff0c;除了多年前学习的一点关于HTML的皮毛&#xff0c;对现在的前端技术栈可谓是一窍不通。但是因为最近在做的内部业务全链路监控系统&#xff0c;负责前端的同事做到一半去搞别的项目了&#xff0c;为了把项目落地不得不硬着头皮学一下前…

机器学习12推荐系统

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

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

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

Apache Tomcat 7 Configuration BIO NIO AIO APR ThreadPool

Apache Tomcat 7 Configuration Reference (7.0.93) - The Executor (thread pool)https://tomcat.apache.org/tomcat-7.0-doc/config/executor.html Tomat组件研究之ThreadPool - 老码农的专栏 - CSDN博客https://blog.csdn.net/chen77716/article/details/344764 Tomcat中的线…

数学笔记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;每一次梯度下降…

svn认证失败,解决方案

在svnserve.conf:文件中去掉authz-db authz前面的#号&#xff0c;会出现的认证失败。 造成此原因的主要问题就是authz文件中权限没有配置好。 例如&#xff1a; 创建prj1库 svnadmin create prj1 修改配置文件 svnserve.conf: [general] anon-access read auth-access write…

Python机器学习库sklearn的安装

Python机器学习库sklearn的安装 scikit-learn是Python的一个开源机器学习模块&#xff0c;它建立在NumPy&#xff0c;SciPy和matplotlib模块之上能够为用户提供各种机器学习算法接口&#xff0c;可以让用户简单、高效地进行数据挖掘和数据分析。 Ubuntu14.04系统上安装 安装num…

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 对操作系统的…

CNN训练模型 花卉

一、CNN训练模型 模型尺寸分析&#xff1a;卷积层全都采用了补0&#xff0c;所以经过卷积层长和宽不变&#xff0c;只有深度加深。池化层全都没有补0&#xff0c;所以经过池化层长和宽均减小&#xff0c;深度不变。http://download.tensorflow.org/example_images/flower_photo…

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 响应时间-…

花卉分类CNN

tensorflow升级到1.0之后&#xff0c;增加了一些高级模块&#xff1a; 如tf.layers, tf.metrics, 和tf.losses&#xff0c;使得代码稍微有些简化。 任务&#xff1a;花卉分类 版本&#xff1a;tensorflow 1.3 数据&#xff1a;http://download.tensorflow.org/example_images/f…

【模板】可持久化线段树

可持久化线段树/主席树&#xff1a; 顾名思义&#xff0c;该数据结构是可以访问历史版本的线段树。用于解决需要查询历史信息的区间问题。 在功能与时间复杂度上与开n棵线段树无异&#xff0c;然而空间复杂度从$O(n\times nlogn)$降到了$O(nlogn)$。 实现方法&#xff1a; 每次…

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 …