这种方法假设样本点在光滑的流形上,这一方法的计算数据的低维表达,局部近邻信息被最优的保存。以这种方式,可以得到一个能反映流形的几何结构的解。

步骤一:构建一个图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实现拉普拉斯特征图降维示例相关推荐

  1. python画折线图虚线_python绘制简单折线图代码示例

    1.画最简单的直线图 代码如下: import numpy as np import matplotlib.pyplot as plt x=[0,1] y=[0,1] plt.figure() plt ...

  2. 基于python的步态分析_Python 实现步态能量图

    步态识别领域有相当多的研究是基于 "类能量图".一个步态周期内的所有轮廓按照某种规则累计构成的模板统称为 "类能量图".能量图法不易受到轮廓噪声的干扰,有效地融 ...

  3. 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 ...

  4. python入门图谱_Python入门基础教程图

    一张图带我们入门Python基础教程 啄木鸟社区上原始翻译后绘制的,最早这个图是出现在(链接已失效) "这个图太棒了,有编程基础的人一下子就了解 Python 的用法了.真正的 30 分钟上 ...

  5. python制作日历_Python如何绘制日历图和热力图

    本文以2019年全国各城市的空气质量观测数据为例,利用matplotlib.calmap.pyecharts绘制日历图和热力图.在绘图之前先利用pandas对空气质量数据进行处理. 数据处理 从网站下 ...

  6. python画企鹅_python如何绘制降水图

    python能快速解决日常工作中的小任务,比如数据展示.python做数据展示,主要用到matplotlib库,使用简单的代码,就可以很方便的绘制折线图.柱状图等.使用Java等,可能还需要配合htm ...

  7. python 监视图_python获取zabbix监控图

    领导有个需求,希望每天邮件发出当天服务器的监控状态,开始是每天下午快下班的时候打开zabbix截图,每天都这样实在是累,于是写了一段脚本实现自动抓取图片,并组装成html,通过定时邮件发送,实现日报自 ...

  8. python爬图片_Python爬虫:彼岸图网图片爬取-Go语言中文社区

    杂 哈哈,这是我第一篇博客 半年以后回来再看发现这代码简直太难看了 现在已经弃用大小驼峰转蛇形命名了 确实好看 除了命名别的也写的不怎么样 因为爬虫只是个爱好所以也不准备再投入时间重构了 将就着看吧 ...

  9. python画误差棒_Python数据可视化-误差棒图errorbar

    实验中往往由于各种原因会存在一定的误差,针对这一波动范围我们称之为置信区间.在可视化数据时,Matplotlib中的误差棒图(errorbar,官方项目地址)可以很好的表现这种有一定置信区间的带误差数 ...

最新文章

  1. IndentationError: unexpected indent python
  2. php html报错,PHP 基础
  3. IIS环境下如何批量添加、修改、删除绑定的域名
  4. 阿里云服务centOS7下安装rabbitmq
  5. 【node测试系列】几款前端测试断言库(Assertions lib)的选型总结
  6. Android实现点击通知栏后,先启动应用再打开目标Activity
  7. 线性代数之矩阵逆的微分
  8. Linux stat命令总结
  9. WinSock编程基础
  10. r语言中的或怎么表示什么不同_R经典入门 之 R语言的基本原理与概念 -- 200430
  11. C++ Lib的生成与调用 生成dll,lib快速的寻找方法
  12. 分布式事务解决方案 Seata 的原理个人理解以及 demo 配置
  13. vue如何加载html字符串_VUE渲染后端返回含有script标签的html字符串示例
  14. 协议森林02 小喇叭开始广播 (以太网与WiFi协议)
  15. java超市库存管理系统_java实现超市库存管理系统
  16. Overleaf 硕士毕业论文参考文献格式设置
  17. 搭档之家|紧跟信息消费大发展时代步伐
  18. 洛谷 U5750 疯暴英雄
  19. 低代码的价值,短期被高估,长期被低估
  20. 通达信玩转庄家追击反转指标源码,带MACD顶背离底背离,不错。

热门文章

  1. Developer FAQ: Building | 开发人员常遇到的问题:构建
  2. 互信息的数学解释以及matlab编程
  3. 数据的设计命名的十个要点
  4. 阿拉伯与罗马数字互转程序
  5. go语言游戏编程-Ebiten实现画面的填充
  6. 23种设计模式C++源码与UML实现--观察者模式
  7. 为nginx反向代理设置自定义错误页面
  8. python读取字典元素笔记_Python中列表、字典、元组数据结构的简单学习笔记
  9. 一篇不一样的docker原理解析 提高篇
  10. 详解Linux-I2C驱动