python实现拉普拉斯特征图降维示例


Posted in Python onNovember 25, 2019

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

步骤一:构建一个图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,连接点之间的权值:

python实现拉普拉斯特征图降维示例

步骤三:python实现拉普拉斯特征图降维示例 ,实现广义本征分解:

python实现拉普拉斯特征图降维示例

使python实现拉普拉斯特征图降维示例 是最小的m+1个本征值。忽略与 python实现拉普拉斯特征图降维示例 =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 相关文章推荐
Linux下使用python自动修改本机网关代码分享
May 21 Python
python 接口返回的json字符串实例
Mar 27 Python
pandas数据框,统计某列数据对应的个数方法
Apr 11 Python
python 实现视频流下载保存MP4的方法
Jan 09 Python
Python中的random.uniform()函数教程与实例解析
Mar 02 Python
python使用递归的方式建立二叉树
Jul 03 Python
Python如何读写CSV文件
Aug 13 Python
Pycharm2020最新激活码|永久激活(附最新激活码和插件的详细教程)
Sep 29 Python
python开发一款翻译工具
Oct 10 Python
tensorflow中的数据类型dtype用法说明
May 26 Python
用Python进行栅格数据的分区统计和批量提取
May 27 Python
详解Python+OpenCV绘制灰度直方图
Mar 22 Python
python模块hashlib(加密服务)知识点讲解
Nov 25 #Python
Python3如何对urllib和urllib2进行重构
Nov 25 #Python
python pygame实现球球大作战
Nov 25 #Python
Python内置加密模块用法解析
Nov 25 #Python
python使用pygame实现笑脸乒乓球弹珠球游戏
Nov 25 #Python
Django项目基础配置和基本使用过程解析
Nov 25 #Python
nginx+uwsgi+django环境搭建的方法步骤
Nov 25 #Python
You might like
深入了解php4(1)--回到未来
2006/10/09 PHP
最令PHP初学者们头痛的十四个问题
2007/01/15 PHP
火车采集器 免费版使出收费版本功能实现原理
2009/09/17 PHP
sphinx增量索引的一个问题
2011/06/14 PHP
php截取后台登陆密码的代码
2012/05/05 PHP
JS操作Cookies包括(读取添加与删除)
2012/12/26 Javascript
Vuejs第十篇之vuejs父子组件通信
2016/09/06 Javascript
基于Layer+jQuery的自定义弹框
2020/05/26 Javascript
jquery+ajax实现省市区三级联动效果简单示例
2017/01/04 Javascript
彻底学会Angular.js中的transclusion
2017/03/12 Javascript
JS+html5 canvas实现的简单绘制折线图效果示例
2017/03/13 Javascript
angularjs中回车键触发某一事件的方法
2017/04/24 Javascript
详解PHP后期静态绑定分析与应用
2018/03/21 Javascript
vue+element-ui实现表格编辑的三种实现方式
2018/10/31 Javascript
node.js中ws模块创建服务端和客户端,网页WebSocket客户端
2019/03/06 Javascript
JavaScript静态作用域和动态作用域实例详解
2019/06/17 Javascript
js中console在一行内打印字符串和对象的方法
2019/09/10 Javascript
node解析修改nginx配置文件操作实例分析
2019/11/06 Javascript
Vue通过Blob对象实现导出Excel功能示例代码
2020/07/31 Javascript
[43:51]2014 DOTA2国际邀请赛中国区预选赛 Dream Times VS TongFu
2014/05/22 DOTA
[40:19]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第二场 12.18
2020/12/19 DOTA
Python 常用 PEP8 编码规范详解
2017/01/22 Python
浅谈flask截获所有访问及before/after_request修饰器
2018/01/18 Python
python中abs&map&reduce简介
2018/02/20 Python
基于Python列表解析(列表推导式)
2018/06/23 Python
tensorflow 实现数据类型转换
2020/02/17 Python
python中通过pip安装库文件时出现“EnvironmentError: [WinError 5] 拒绝访问”的问题及解决方案
2020/08/11 Python
CSS图片翻转动画技术详解(IE也实现了)
2014/04/03 HTML / CSS
html5使用canvas绘制文字特效
2014/12/15 HTML / CSS
我的珠宝盒:Ma boîte à bijoux
2019/08/27 全球购物
信息技术培训感言
2014/03/06 职场文书
小学生手册家长评语
2014/04/16 职场文书
2014年最新个人对照检查材料范文
2014/09/25 职场文书
2015年党支部书记工作总结
2015/05/21 职场文书
教务处干事工作总结
2015/08/14 职场文书
安全生产培训心得体会
2016/01/18 职场文书