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 11 Python
浅谈机器学习需要的了解的十大算法
Dec 15 Python
python实现m3u8格式转换为mp4视频格式
Feb 28 Python
python定向爬虫校园论坛帖子信息
Jul 23 Python
详解Python 爬取13个旅游城市,告诉你五一大家最爱去哪玩?
May 07 Python
python实现在函数中修改变量值的方法
Jul 16 Python
python 判断三个数字中的最大值实例代码
Jul 24 Python
Python实现图像的垂直投影示例
Jan 17 Python
python+gdal+遥感图像拼接(mosaic)的实例
Mar 10 Python
浅谈keras中的keras.utils.to_categorical用法
Jul 02 Python
详解pycharm配置python解释器的问题
Oct 15 Python
Python常用base64 md5 aes des crc32加密解密方法汇总
Nov 06 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
zend framework配置操作数据库实例分析
2012/12/06 PHP
PHP实现留言板功能的详细代码
2017/03/25 PHP
php使用fullcalendar日历插件详解
2019/03/06 PHP
PHP实现文件上传后台处理脚本
2020/03/04 PHP
发布一个基于javascript的动画类 Fx.js
2010/11/05 Javascript
jquery 读取页面load get post ajax 四种方式代码写法
2011/04/02 Javascript
jQuery 插件仿百度搜索框智能提示(带Value值)
2013/01/22 Javascript
基于JS实现密码框(password)中显示文字提示功能代码
2016/05/27 Javascript
Google 地图类型详解及示例代码
2016/08/06 Javascript
JS焦点图,JS 多个页面放多个焦点图的实例
2016/12/08 Javascript
JavaScript设置名字输入不合法的实现方法
2017/05/23 Javascript
简单谈谈require模块化jquery和angular的问题
2017/06/23 jQuery
js轮播图的插件化封装详解
2017/07/17 Javascript
three.js实现3D视野缩放效果
2017/11/16 Javascript
详解koa2学习中使用 async 、await、promise解决异步的问题
2018/11/13 Javascript
vue登录页面cookie的使用及页面跳转代码
2019/07/10 Javascript
在vue中实现嵌套页面(iframe)
2020/07/30 Javascript
node使用async_hooks模块进行请求追踪
2021/01/28 Javascript
[36:09]Secret vs VG 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.24
2019/09/10 DOTA
python统计一个文本中重复行数的方法
2014/11/19 Python
Python使用Scrapy爬取妹子图
2015/05/28 Python
SQLite3中文编码 Python的实现
2017/01/11 Python
用python写个自动SSH登录远程服务器的小工具(实例)
2017/06/17 Python
利用python将json数据转换为csv格式的方法
2018/03/22 Python
Python 确定多项式拟合/回归的阶数实例
2018/12/29 Python
python读取有密码的zip压缩文件实例
2019/02/08 Python
Django调用百度AI接口实现人脸注册登录代码实例
2020/04/23 Python
matplotlib部件之矩形选区(RectangleSelector)的实现
2021/02/01 Python
编写一子程序,将一链表倒序,即使链表表尾变表头,表头变表尾
2016/02/10 面试题
冰淇淋店创业计划书范文
2013/12/27 职场文书
项目经理任命书
2014/06/04 职场文书
2014年宣传思想工作总结
2014/12/10 职场文书
python cv2图像质量压缩的算法示例
2021/06/04 Python
Nginx stream 配置代理(Nginx TCP/UDP 负载均衡)
2021/11/17 Servers
python垃圾回收机制原理分析
2022/04/13 Python
AndroidStudio图片压缩工具ImgCompressPlugin使用实例
2022/08/05 Java/Android