用星坐标(Star Coordinates)表示高维数据
星型坐标是Kandogan在2001年提出的一种高维数据的可视化方法。这种方法类似于向量的合成,在二维平面上选取一点作为坐标原点,对于D维的数据,从原点出发作出D个向量(轴)代表这D个维度,向量(轴)的长度代表在星坐标表示时各个维度的权重。这种方法本质上是一个向量合成,类似于我们在物理中学的力的合成。也可以说是一个从D维到2维的一个投影变换。要实现较好的效果,要使每一个数据点到它所属类的类中心点的距离之和与到所有数据点的中心的距离之和的比尽可能小一点。
下面是一个运用星图表示数据的例子
clc,clear
load 'Wine.mat';
LENGTH = 178;
Label = Wine(:,1);Loop = 5;%模拟退火的内循环次数%%%%%%%%% 规范化 %%%%%%%%%%%%%%
minmax = zeros(14,2); %第一列存储最小值,第二列存储最大值
minmax(1,1) = 0;
minmax(1,2) = 0;
for i = 2:14minmax(i,1) = Wine(1,i);minmax(i,2) = Wine(1,i);
endfor i = 1:LENGTHfor j = 2:14if minmax(j,1)>Wine(i,j)minmax(j,1) = Wine(i,j);endif minmax(j,2)<Wine(i,j)minmax(j,2) = Wine(i,j);endend
endfor i = 1:LENGTHfor j = 2:14Wine(i,j) = (Wine(i,j)-minmax(j,1))/(minmax(j,2)-minmax(j,1))*1000-500;end
end
%%%%%%%%%% 规范化结束 %%%%%%%%%%%%%X = (Wine(:,2:14))';
P = ones(2,13);
Q = ones(2,13);%energy(Y,Label,3,LENGTH)%%%模拟退火算法
T = 15000;
Tf = 0.0001;
alpha = 0.98;while T>Tffor i = 1:Loopposition1 = 0;position2 = 0;while position2<1 || position2>13position2 = round(13*rand);endwhile position1<1 || position1>2position1 = round(2*rand);endchange = rand-0.5;Q = P;Q(position1,position2) = Q(position1,position2)+change;Yp = P*X;Yq = Q*X;ep = energy(Yp,Label,3,LENGTH);eq = energy(Yq,Label,3,LENGTH);de = eq-ep;if de>0P = Q;elseif exp(de/T)>randP = Q;elseQ = P;endendendT = T*alpha;
endY = P*X;
for i = 1:LENGTHif Label(i)==1scatter(Y(1,i),Y(2,i),'.r')hold on;endif Label(i)==2scatter(Y(1,i),Y(2,i),'.g')hold on;endif Label(i)==3scatter(Y(1,i),Y(2,i),'.b')hold on;end
end%显示轴
linelength = 1000;
dname = {'1','2','3','4','5','6','7','8','9','10','11','12','13'};
for i = 1:13line([0 P(1,i)]*linelength,[0 P(2,i)]*linelength,'color','b')hold on;text(P(1,i)*linelength,P(2,i)*linelength,dname(i));angle = 0:pi/100:2*pi;R = sqrt(P(1,i)*P(1,i)+P(2,i)*P(2,i))*linelength;circlex = R*cos(angle);circley = R*sin(angle);plot(circlex,circley,'-')hold on;
end
效果如下所示,考虑到随着退火算法收敛程度加大,同一类的数据会压缩到一起,所以这里的迭代次数设置的不是很大。在这里面可以看到第7,12,11,10四个维度在区分这三类样本点的时候的权重相对较大。
用星坐标(Star Coordinates)表示高维数据相关推荐
- matlab利用t-SNE实现高维数据可视化(tsne函数用法实例)
tsne用法 tsne - t-Distributed Stochastic Neighbor Embedding This MATLAB function returns a matrix of t ...
- matlab矩阵按坐标取,在Matlab中获取inlier点的坐标(Get coordinates of inlier points in Matlab)...
在Matlab中获取inlier点的坐标(Get coordinates of inlier points in Matlab) 我需要找到使用impixel()在对象检测中获得的内部点的像素值. 我 ...
- 高维数据PCA降维可视化(KNN分类)
在做机器学习的时候,经常会遇到三个特征以上的数据,这类数据通常被称为高维数据.数据做好类别分类后,通过二维图或者三维图进行可视化,对于高维数据可以通过PCA(Principal Component A ...
- 脑洞大开!高维数据怎样做出可视化效果的5个思路(多图)
每个数据对象有两个或两个以上独立或者相关属性的数据. 一维数据 一维数据可以利用饼图.条形图来表示. 二维数据 请点击此处输入图片描述 三维数据 高维数据 高维指数据具有多个独立属性,多元指数据具有多 ...
- 流形学习-高维数据的降维与可视化
1.流形学习的概念 流形学习方法(Manifold Learning),简称流形学习,自2000年在著名的科学杂志<Science>被首次提出以来,已成为信息科学领域的研究热点.在理论和应 ...
- 可视化高维数据:T-SNE
作者:知乎-Ganso 地址:https://zhuanlan.zhihu.com/p/99469215 Google Tech Talk June 24, 2013 (more info below ...
- R使用tsne进行高维数据可视化实战:二维可视化、三维可视化
R使用tsne进行高维数据可视化实战:二维可视化.三维可视化 t-SNE是一种非常强大的技术,可以用于多维数据中的可视化分析(寻找模式).它对复杂多维数据的可视化能力是显而易见的,它以无监督的方式对数 ...
- Python使用tsne进行高维数据可视化实战:二维可视化、三维可视化
Python使用tsne进行高维数据可视化实战:二维可视化.三维可视化 # 绘制二维可视化图像并添加标签字符函数 def plot_embedding(data, label, title):x_mi ...
- 基于Hash算法的高维数据的最近邻检索
一.摘要 最紧邻检索:一种树基于树结构,一种是基于hash a.随机投影算法,需要产生很多哈希表,才能提高性能. b.基于学习的哈希算法在哈希编码较短时候性能不错,但是增加编码长度并不能显著提高性能. ...
最新文章
- Jetty源码学习3-启动服务器
- 在Vmware中安装Hyper-V
- 将MPM雪模拟移植到Maya
- ABAP 判断某个或者某段字符串是否为汉字
- python 福利彩票_使用Python买福彩,5个数字,20选5,有没买过
- 神策数据罗彦博:如何正确使用漏斗分析提升转化?
- 计算机专业开学周记,【热门】开学周记集锦5篇
- 智能算法的研究与实现
- Objections vs. excuses
- Python 3 Basics
- python可变类型与不可类型
- (译)通过WebChannel/WebSockets与QML中的HTML交互
- 设计模式(行为型模式)——模板方法模式(Template Method)
- 想听懂用户的声音,至少得先学会数据分析吧
- 记:一次意外JTAG使用引发对于STM32内核的了解
- 2021-10-01 REDIS全网最超级详细
- SpringBoot项目中华为云 内容审核的使用(内附代码)
- 7月第3周回顾:裁员潮袭卷IT人 雅虎服“软”愿被收购
- 2019第三届“数维杯”大学生数学建模夏令营
- Pr速成3小时学会视频剪辑[副业学习会]
热门文章
- 风热感冒,风寒感冒,病毒性感冒,细菌性感冒
- Go语言xorm框架
- Stata:固定效应模式必须加入时间固定效应吗?
- 通过cmd窗口导入导出mysql数据库
- 基于javaweb的律师事务所律师管理系统(java+ssm+html+js+jsp+mysql)
- Vue开发项目入门——Vue脚手架
- 【考研·计算机组成原理】校验码 小结
- python气泡图的地图_Python数据可视化:香港地图、房价可视化,绘制气泡图
- keytool运行错误
- Node.js(三)路由器、中间件、MySQL模块、RESTful接口