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 相关文章推荐
Python下singleton模式的实现方法
Jul 16 Python
Python判断操作系统类型代码分享
Nov 22 Python
CentOS安装pillow报错的解决方法
Jan 27 Python
python3.5实现socket通讯示例(TCP)
Feb 07 Python
利用Python找出序列中出现最多的元素示例代码
Dec 08 Python
Python实现的朴素贝叶斯分类器示例
Jan 06 Python
python 日期排序的实例代码
Jul 11 Python
用Python实现二叉树、二叉树非递归遍历及绘制的例子
Aug 09 Python
给大家整理了19个pythonic的编程习惯(小结)
Sep 25 Python
Django自带的加密算法及加密模块详解
Dec 03 Python
对tensorflow中的strides参数使用详解
Jan 04 Python
Python操作注册表详细步骤介绍
Feb 05 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
PHP is_subclass_of函数的一个BUG和解决方法
2014/06/01 PHP
ThinkPHP3.1基础知识快速入门
2014/06/19 PHP
php实现设计模式中的单例模式详解
2014/10/11 PHP
PHP排序算法类实例
2015/06/17 PHP
在Mac OS上编译安装Nginx+PHP+MariaDB开发环境的教程
2016/02/23 PHP
laravel批量生成假数据的方法
2019/10/09 PHP
基于jquery的图片轮播 tab切换组件
2012/07/19 Javascript
jquery的ajaxSubmit()异步上传图片并保存表单数据演示代码
2013/06/04 Javascript
原生js实现日期联动
2015/01/12 Javascript
jQuery绑定事件的几种实现方式
2016/05/09 Javascript
使用jQuery加载html页面到指定的div实现方法
2016/07/13 Javascript
详解前端路由实现与react-router使用姿势
2017/08/07 Javascript
vuex学习之Actions的用法详解
2017/08/29 Javascript
浅谈Node.js CVE-2017-14849 漏洞分析(详细步骤)
2017/11/10 Javascript
javascript高仿热血传奇游戏实现代码
2018/02/22 Javascript
vue-swiper的使用教程
2018/08/30 Javascript
微信小程序仿知乎实现评论留言功能
2018/11/28 Javascript
Vue使用lodop实现打印小结
2019/07/06 Javascript
浅谈如何优雅处理JavaScript异步错误
2019/11/12 Javascript
[01:17:12]职来职往完美电竞专场
2014/09/18 DOTA
wxpython中自定义事件的实现与使用方法分析
2016/07/21 Python
CentOS6.5设置Django开发环境
2016/10/13 Python
python实现决策树
2017/12/21 Python
python 类对象和实例对象动态添加方法(分享)
2017/12/31 Python
python+opencv实现阈值分割
2018/12/26 Python
在Python中通过getattr获取对象引用的方法
2019/01/21 Python
Django用户认证系统 Web请求中的认证解析
2019/08/02 Python
Python使用gluon/mxnet模块实现的mnist手写数字识别功能完整示例
2019/12/18 Python
如何基于python实现画不同品种的樱花树
2020/01/03 Python
Python捕获异常堆栈信息的几种方法(小结)
2020/05/18 Python
Timberland美国官网:全球领先的户外品牌
2016/08/15 全球购物
美国摩托车头盔、零件、齿轮及配件商店:Cycle Gear
2019/06/12 全球购物
奥地利购买珠宝和手表网站:ELLA JUWELEN
2019/09/03 全球购物
打架检讨书500字
2014/01/29 职场文书
机械电子工程专业求职信
2014/06/22 职场文书
撤诉申请书法院范本
2015/05/18 职场文书