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 的类、继承和多态详解
Jul 16 Python
基于Python数据可视化利器Matplotlib,绘图入门篇,Pyplot详解
Oct 13 Python
Python subprocess模块详细解读
Jan 29 Python
对python指数、幂数拟合curve_fit详解
Dec 29 Python
简单介绍python封装的基本知识
Aug 10 Python
Python可变参数会自动填充前面的默认同名参数实例
Nov 18 Python
Python字节单位转换实例
Dec 05 Python
win10系统下python3安装及pip换源和使用教程
Jan 06 Python
Pycharm小白级简单使用教程
Jan 08 Python
Python模拟FTP文件服务器的操作方法
Feb 18 Python
关于jupyter打开之后不能直接跳转到浏览器的解决方式
Apr 13 Python
Python轻量级web框架bottle使用方法解析
Jun 13 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
极典R601SW收音机
2021/03/02 无线电
用jQuery简化JavaScript开发分析
2009/02/19 Javascript
基于Jquery的$.cookie()实现跨越页面tabs导航实现代码
2011/03/03 Javascript
JavaScript中的Primitive对象封装介绍
2014/12/31 Javascript
js实现从右向左缓缓浮出网页浮动层广告的方法
2015/05/09 Javascript
javascript实现九宫格相加数值相等
2020/05/28 Javascript
基于JavaScript FileReader上传图片显示本地链接
2016/05/27 Javascript
基于JavaScript实现树形下拉框
2016/08/10 Javascript
BootStrap下拉框在firefox浏览器界面不友好的解决方案
2016/08/18 Javascript
Bootstrap Table使用方法解析
2016/10/19 Javascript
微信小程序 form组件详解
2016/10/25 Javascript
Angular项目从新建、打包到nginx部署全过程记录
2017/12/09 Javascript
Vue+jquery实现表格指定列的文字收缩的示例代码
2018/01/09 jQuery
给localStorage设置一个过期时间的方法分享
2018/11/06 Javascript
利用webpack理解CommonJS和ES Modules的差异区别
2020/06/16 Javascript
Pandas 合并多个Dataframe(merge,concat)的方法
2018/06/08 Python
python pyheatmap包绘制热力图
2018/11/09 Python
python实现Virginia无密钥解密
2019/03/20 Python
Python super()函数使用及多重继承
2020/05/06 Python
Python matplotlib画图时图例说明(legend)放到图像外侧详解
2020/05/16 Python
Python的Django框架实现数据库查询(不返回QuerySet的方法)
2020/05/19 Python
python名片管理系统开发
2020/06/18 Python
pytorch 常用函数 max ,eq说明
2020/06/28 Python
解决Pytorch自定义层出现多Variable共享内存错误问题
2020/06/28 Python
Django restful framework生成API文档过程详解
2020/11/12 Python
Python中的流程控制详解
2021/02/18 Python
医学专业毕业生个人求职信
2013/12/25 职场文书
《灯光》教学反思
2014/02/08 职场文书
培训班开班仪式主持词
2014/03/28 职场文书
《东方明珠》教学反思
2014/04/20 职场文书
小学生思想品德评语
2014/12/31 职场文书
幼儿园校车安全责任书
2015/05/08 职场文书
2015年公司保安年终工作总结
2015/05/14 职场文书
初中毕业感言300字
2015/07/31 职场文书
海弦WR-800F
2022/04/05 无线电
人工智能深度学习OpenAI baselines的使用方法
2022/05/20 Python