多维尺度变换MDS(Multidimensional Scaling)
流形学习(Manifold Learning)是机器学习中一大类算法的统称,流形学习是非线性的降维方法(an approach to non-linear dimensionality reduction)。PCA、LDA等降维方法基于线性假设,经常会损失数据内部非线性的结构信息;流形学习是线性降维方法的generalization,目的是捕获数据内部非线性的结构。而MDS就是流行学习中非常经典的一种方法。
多维尺度变换是一种在低维空间展示“距离”数据结构的多元数据分析技术,是一种将多维空间的研究对象简化到低维空间进行定位、分析和归类,同时又保留对象间原始关系的数据分析方法。多维尺度变换算法集中于保留高维空间中的“相似度”信息,而在一般的问题解决的过程中,这个“相似度”通常用欧式距离来定义。
通俗来讲,就是将多维数据映射到低维空间,同时保持各个样本之间的原有相对距离不变。
多维尺度变换的目标:当n 个对象中各对对象之间的相似性(或距离)给定时,确定这些对象在低维(欧式) 空间中的表示(称为感知图, Perceptual Mapping),
并使其尽可能与原先的相似性(或距离)“大体匹配”,使得由降维所引起的任何变形达到最小。
多维尺度变换可以应用到数据可视化,通过可视化找出异常点,反欺诈应用等。
计算步骤大致如下:
第一步:计算所有数据项两两间的实际距离(可参考皮尔逊算法或欧几里德算法)
第二步:将数据项随机放置在二维图上。
第三步:针对每两两构成的一对数据项,将它们的实际距离与当前在二维图上的距离进行比较,求出一个误差值
第四步:根据误差的情况,按照比例将每个数据项的所在位置移近或移远少许量。(每一个节点的移动,都是所有其它节点施加在该节点上的推或拉的结合效应。)
第五步:重复第三步、第四步(节点每移动一次,其当前距离与实际距离的差距就会减少一些)。这一过程会不断地重复多次,直到无法再通过移动节点来减少总体误差为止。
python 实现
已知四个城市之间的距离,如何展示出他们的相对位置,原理就是利用MDS将多维数据映射到二维空间,作为经纬度坐标,同时之间的相对距离保持不变。
import numpy as np
import pandas as pd
from sklearn.manifold import MDS
import matplotlib.pyplot as plt
#%%
data = np.array([(0,1046,608,1859),
(1046,0,825,1149),
(608,825,0,1280),
(1859,1149,1280,0)
]
)
index = ['beijing','shanghai','zhengzhou','guangzhou']
columns = ['beijing','shanghai','zhengzhou','guangzhou']
Word = pd.DataFrame(data,index,columns)
Word
#%%
mds = MDS()
mds.fit(data)
#%%
a = mds.embedding_
print(a)
plt.scatter(a[0:,0],a[0:,1],color='red')

多维尺度变换MDS(Multidimensional Scaling)的更多相关文章
- SPSS数据分析—多维尺度分析
在市场研究中,有一种分析是研究消费者态度或偏好,收集的数据是某些对象的评分数据,这些评分数据可以看做是对象间相似性或差异性的表现,也就是一种距离,距离近的差异性小,距离远的差异性大.而我们的分析目的也 ...
- 二维DCT变换
DCT(Discrete Consine Transform),又叫离散余弦变换,它的第二种类型,经常用于信号和图像数据的压缩.经过DCT变换后的数据能量非常集中,一般只有左上角的数值是非零的,也就是 ...
- SPSS数据分析—基于最优尺度变换的典型相关分析
传统的典型相关分析只能考虑变量之间的线性相关情况,且必须为连续变量,而我们依然可以使用最优尺度变换来拓展其应用范围,使其可以分析非线性相关.数据为分类数据等情况,并且不再仅限于两个变量间的分析, 虽然 ...
- 吴裕雄 python 机器学习——多维缩放降维MDS模型
# -*- coding: utf-8 -*- import numpy as np import matplotlib.pyplot as plt from sklearn import datas ...
- 二维DCT变换 | Python实现
引言 最近专业课在学信息隐藏与数字水印,上到了变换域隐藏技术,提到了其中的DCT变换,遂布置了一个巨烦人的作业,让手动给两个\(8\times8\)的矩阵做二维DCT变换,在苦逼的算了一小时后,我决定 ...
- Bitmap尺度变换
Bitmap bitMap = BitmapFactory.decodeFile(path); int width = bitMap.getWidth(); int height = bitMap.g ...
- 宏基因组扩增子图表解读2散点图:组间整体差异分析(Beta多样性)
散点图 数据点在直角坐标系平面上的分布图.在宏基因组领域,散点图常用于展示样品组间的Beta多样性,常用的分析方法有主成分分析(PCA),主坐标轴分析(PCoA/MDS)和限制条件的主坐标轴分析(CP ...
- R语言︱常用统计方法包+机器学习包(名称、简介)
一.一些函数包大汇总 转载于:http://www.dataguru.cn/thread-116761-1-1.html 时间上有点过期,下面的资料供大家参考基本的R包已经实现了传统多元统计的很多功能 ...
- ML—R常用多元统计分析包(持续更新中……)
基本的R包已经实现了传统多元统计的很多功能,然而CRNA的许多其它包提供了更深入的多元统计方法,下面要综述的包主要分为以下几个部分: 1) 多元数据可视化(Visualising multivaria ...
随机推荐
- 大家好,请问在DELPHI中#13和#10是表示什么含义的?
#13: 表示"回车"#10: 表示"换行" ASCII码 Delphi字符 C程序 含义------- ---------- ----- ------ ...
- Spring Cloud构建微服务架构
Dalston版本 由于Brixton和Camden版本的教程已经停止更新,所以笔者计划在2017年上半年完成Dalston版本的教程编写(原计划完成Camden版本教程,但由于写了两篇Dalston ...
- java学习 猜数字
package study; import java.util.Scanner; /** * 猜数字小游戏 * * @author carry * */ public class GuessNumbe ...
- iOS pch文件的创建
3.iso pch头文件的创建 输入文件名的时候记得打钩 3.1.在Build Settings 里搜索pref就能找到preflx, 点击设置相对路径 $(SRCROOT) +路径:成功了就会显示 ...
- 洛谷 P3177 树上染色
题面 题目要求将k个点染成黑色,求黑点两两距离及白点两两距离,使他们之和最大. 我们可以将距离转化为路径,然后再将路径路径拆分成边,就可以记录每条边被经过的次数,直接计算即可. 很简单对吧?那么问题来 ...
- Native Wifi API
原文链接地址:https://www.cnblogs.com/jackcin/p/3285357.html 在windows平台下,可以使用native wifi api来控制无线网卡,包括获取无线网 ...
- Sort Integers II
Given an integer array, sort it in ascending order. Use quick sort, merge sort, heap sort or any O(n ...
- 用dtree实现树形菜单 dtree使用说明
http://www.jb51.net/article/28566.htm 准备工作: 请从脚本之家http://www.jb51.net/jiaoben/31974.html下载dtree.zip文 ...
- GitLab安装部署与管理
一.安装Gitlab前系统预配置准备工作 操作系统:centos 7.3 1.关闭firewalld防火墙 #systemctl stop firewalld //关闭防火墙 #systemctl d ...
- 使用无线网卡搭建虚拟wifi
1.首先以管理员身份运行命令提示符 开始->搜索框输入cmd,出来的cmd.exe上右键管理员身份运行,或者win+R打开运行提示框,输入cmd并回车. 2.设置“虚拟Wifi网卡”模式 敲入命 ...