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批量给云主机配置安全组的方法教程
Jun 21 Python
Python实现基于多线程、多用户的FTP服务器与客户端功能完整实例
Aug 18 Python
利用Django内置的认证视图实现用户密码重置功能详解
Nov 24 Python
基于Python中单例模式的几种实现方式及优化详解
Jan 09 Python
numpy.linspace 生成等差数组的方法
Jul 02 Python
python实现遍历文件夹修改文件后缀
Aug 28 Python
详解Python字典小结
Oct 20 Python
python通过配置文件共享全局变量的实例
Jan 11 Python
Python Django框架单元测试之文件上传测试示例
May 17 Python
详解将Python程序(.py)转换为Windows可执行文件(.exe)
Jul 19 Python
python函数不定长参数使用方法解析
Dec 14 Python
Python简单实现区域生长方式
Jan 16 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
使用phpQuery获取数组的实例
2017/03/13 PHP
JS实现打开本地文件或文件夹
2021/03/09 Javascript
Javascript客户端脚本的设计和应用
2006/08/21 Javascript
鼠标移动到图片名上,显示图片的简单实例
2013/07/14 Javascript
jquery插件lazyload.js延迟加载图片的使用方法
2014/02/19 Javascript
jQuery 浮动导航菜单适合购物商品类型的网站
2014/09/09 Javascript
Node.js开发之访问Redis数据库教程
2015/01/14 Javascript
JQuery中attr方法和removeAttr方法用法实例
2015/05/18 Javascript
JavaScript原型及原型链终极详解
2016/01/04 Javascript
jQuery版本升级踩坑大全
2016/01/12 Javascript
Javascript数组Array方法解读
2016/03/13 Javascript
HTML中setCapture、releaseCapture 使用方法浅析
2016/09/25 Javascript
微信小程序实现animation动画
2018/01/26 Javascript
iphone刘海屏页面适配方法
2019/05/07 Javascript
在Vue中用canvas实现二维码和图片合成海报的方法
2019/06/10 Javascript
Python打印scrapy蜘蛛抓取树结构的方法
2015/04/08 Python
python通过cookie模拟已登录状态的初步研究
2016/11/09 Python
基于python的Tkinter编写登陆注册界面
2017/06/30 Python
Python数据结构之顺序表的实现代码示例
2017/11/15 Python
Python中一些不为人知的基础技巧总结
2018/05/19 Python
Python实现提取XML内容并保存到Excel中的方法
2018/09/01 Python
Python中的CSV文件使用"with"语句的方式详解
2018/10/16 Python
python 分离文件名和路径以及分离文件名和后缀的方法
2018/10/21 Python
python实现二级登陆菜单及安装过程
2019/06/21 Python
Python常用编译器原理及特点解析
2020/03/23 Python
Python matplotlib绘制图形实例(包括点,曲线,注释和箭头)
2020/04/17 Python
Pycharm的Available Packages为空的解决方法
2020/09/18 Python
html5在移动端的屏幕适应问题示例探讨
2014/06/15 HTML / CSS
迪士尼英国官方商店:shopDisney UK
2019/09/21 全球购物
大学生个人推荐信范文
2013/11/25 职场文书
医学专业应届生的自我评价
2014/02/28 职场文书
家长寄语大全
2014/04/02 职场文书
关爱留守儿童标语
2014/06/18 职场文书
汽修专业自荐信
2014/07/07 职场文书
建筑结构施工求职信
2014/07/11 职场文书
行为规范主题班会
2015/08/13 职场文书