python降维效果图_python实现拉普拉斯特征图降维示例
这种方法假设样本点在光滑的流形上,这一方法的计算数据的低维表达,局部近邻信息被最优的保存。以这种方式,可以得到一个能反映流形的几何结构的解。
步骤一:构建一个图G=(V,E),其中V={vi,i=1,2,3…n}是顶点的集合,E={eij}是连接顶点的vi和vj边,图的每一个节点vi与样本集X中的一个点xi相关。如果xi,xj相距较近,我们就连接vi,vj。也就是说在各自节点插入一个边eij,如果Xj在xi的k领域中,k是定义参数。
步骤二:每个边都与一个权值Wij相对应,没有连接点之间的权值为0,连接点之间的权值:
步骤三:令
,实现广义本征分解:
使
是最小的m+1个本征值。忽略与
=0相关的本征向量,选取另外m个本征向量即为降维后的向量。
1、python实现拉普拉斯降维
def laplaEigen(dataMat,k,t):
m,n=shape(dataMat)
W=mat(zeros([m,m]))
D=mat(zeros([m,m]))
for i in range(m):
k_index=knn(dataMat[i,:],dataMat,k)
for j in range(k):
sqDiffVector = dataMat[i,:]-dataMat[k_index[j],:]
sqDiffVector=array(sqDiffVector)**2
sqDistances = sqDiffVector.sum()
W[i,k_index[j]]=math.exp(-sqDistances/t)
D[i,i]+=W[i,k_index[j]]
L=D-W
Dinv=np.linalg.inv(D)
X=np.dot(D.I,L)
lamda,f=np.linalg.eig(X)
return lamda,f
def knn(inX, dataSet, k):
dataSetSize = dataSet.shape[0]
diffMat = tile(inX, (dataSetSize,1)) - dataSet
sqDiffMat = array(diffMat)**2
sqDistances = sqDiffMat.sum(axis=1)
distances = sqDistances**0.5
sortedDistIndicies = distances.argsort()
return sortedDistIndicies[0:k]
dataMat, color = make_swiss_roll(n_samples=2000)
lamda,f=laplaEigen(dataMat,11,5.0)
fm,fn =shape(f)
print 'fm,fn:',fm,fn
lamdaIndicies = argsort(lamda)
first=0
second=0
print lamdaIndicies[0], lamdaIndicies[1]
for i in range(fm):
if lamda[lamdaIndicies[i]].real>1e-5:
print lamda[lamdaIndicies[i]]
first=lamdaIndicies[i]
second=lamdaIndicies[i+1]
break
print first, second
redEigVects = f[:,lamdaIndicies]
fig=plt.figure('origin')
ax1 = fig.add_subplot(111, projection='3d')
ax1.scatter(dataMat[:, 0], dataMat[:, 1], dataMat[:, 2], c=color,cmap=plt.cm.Spectral)
fig=plt.figure('lowdata')
ax2 = fig.add_subplot(111)
ax2.scatter(f[:,first], f[:,second], c=color, cmap=plt.cm.Spectral)
plt.show()
2、拉普拉斯降维实验
用如下参数生成实验数据存在swissdata.dat里面:
def make_swiss_roll(n_samples=100, noise=0.0, random_state=None):
#Generate a swiss roll dataset.
t = 1.5 * np.pi * (1 + 2 * random.rand(1, n_samples))
x = t * np.cos(t)
y = 83 * random.rand(1, n_samples)
z = t * np.sin(t)
X = np.concatenate((x, y, z))
X += noise * random.randn(3, n_samples)
X = X.T
t = np.squeeze(t)
return X, t
实验结果如下:
以上这篇python实现拉普拉斯特征图降维示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
python降维效果图_python实现拉普拉斯特征图降维示例相关推荐
- python画折线图虚线_python绘制简单折线图代码示例
1.画最简单的直线图 代码如下: import numpy as np import matplotlib.pyplot as plt x=[0,1] y=[0,1] plt.figure() plt ...
- 基于python的步态分析_Python 实现步态能量图
步态识别领域有相当多的研究是基于 "类能量图".一个步态周期内的所有轮廓按照某种规则累计构成的模板统称为 "类能量图".能量图法不易受到轮廓噪声的干扰,有效地融 ...
- python dll 混合_Python | 条线混合图
python dll 混合 In some of the cases, we need to plot a bar-line hybrid plot. This plot helps in a bet ...
- python入门图谱_Python入门基础教程图
一张图带我们入门Python基础教程 啄木鸟社区上原始翻译后绘制的,最早这个图是出现在(链接已失效) "这个图太棒了,有编程基础的人一下子就了解 Python 的用法了.真正的 30 分钟上 ...
- python制作日历_Python如何绘制日历图和热力图
本文以2019年全国各城市的空气质量观测数据为例,利用matplotlib.calmap.pyecharts绘制日历图和热力图.在绘图之前先利用pandas对空气质量数据进行处理. 数据处理 从网站下 ...
- python画企鹅_python如何绘制降水图
python能快速解决日常工作中的小任务,比如数据展示.python做数据展示,主要用到matplotlib库,使用简单的代码,就可以很方便的绘制折线图.柱状图等.使用Java等,可能还需要配合htm ...
- python 监视图_python获取zabbix监控图
领导有个需求,希望每天邮件发出当天服务器的监控状态,开始是每天下午快下班的时候打开zabbix截图,每天都这样实在是累,于是写了一段脚本实现自动抓取图片,并组装成html,通过定时邮件发送,实现日报自 ...
- python爬图片_Python爬虫:彼岸图网图片爬取-Go语言中文社区
杂 哈哈,这是我第一篇博客 半年以后回来再看发现这代码简直太难看了 现在已经弃用大小驼峰转蛇形命名了 确实好看 除了命名别的也写的不怎么样 因为爬虫只是个爱好所以也不准备再投入时间重构了 将就着看吧 ...
- python画误差棒_Python数据可视化-误差棒图errorbar
实验中往往由于各种原因会存在一定的误差,针对这一波动范围我们称之为置信区间.在可视化数据时,Matplotlib中的误差棒图(errorbar,官方项目地址)可以很好的表现这种有一定置信区间的带误差数 ...
最新文章
- IndentationError: unexpected indent python
- php html报错,PHP 基础
- IIS环境下如何批量添加、修改、删除绑定的域名
- 阿里云服务centOS7下安装rabbitmq
- 【node测试系列】几款前端测试断言库(Assertions lib)的选型总结
- Android实现点击通知栏后,先启动应用再打开目标Activity
- 线性代数之矩阵逆的微分
- Linux stat命令总结
- WinSock编程基础
- r语言中的或怎么表示什么不同_R经典入门 之 R语言的基本原理与概念 -- 200430
- C++ Lib的生成与调用 生成dll,lib快速的寻找方法
- 分布式事务解决方案 Seata 的原理个人理解以及 demo 配置
- vue如何加载html字符串_VUE渲染后端返回含有script标签的html字符串示例
- 协议森林02 小喇叭开始广播 (以太网与WiFi协议)
- java超市库存管理系统_java实现超市库存管理系统
- Overleaf 硕士毕业论文参考文献格式设置
- 搭档之家|紧跟信息消费大发展时代步伐
- 洛谷 U5750 疯暴英雄
- 低代码的价值,短期被高估,长期被低估
- 通达信玩转庄家追击反转指标源码,带MACD顶背离底背离,不错。