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脚本将文字转换为图片的实例分享
Aug 29 Python
Python 实现 贪吃蛇大作战 代码分享
Sep 07 Python
Python 两个列表的差集、并集和交集实现代码
Sep 21 Python
深入理解NumPy简明教程---数组1
Dec 17 Python
Python实现基于POS算法的区块链
Aug 07 Python
基于python实现学生管理系统
Oct 17 Python
人工神经网络算法知识点总结
Jun 11 Python
python提取xml里面的链接源码详解
Oct 15 Python
python中从for循环延申到推导式的具体使用
Nov 29 Python
django 外键创建注意事项说明
May 20 Python
opencv-python的RGB与BGR互转方式
Jun 02 Python
python爬取代理IP并进行有效的IP测试实现
Oct 09 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
使用apache模块rewrite_module (转)
2007/02/14 PHP
一个PHP分页类的代码
2011/05/18 PHP
PHP fopen 读取带中文URL地址的一点见解
2012/09/25 PHP
JSON用法之将PHP数组转JS数组,JS如何接收PHP数组
2015/10/08 PHP
ECMAScript 5中的属性描述符详解
2015/03/02 Javascript
JavaScript各类型的关系图解
2015/10/16 Javascript
继续学习javascript闭包
2015/12/03 Javascript
JavaScript给input的value赋值引发的关于基本类型值和引用类型值问题
2015/12/07 Javascript
jQuery简单实现遍历单选框的方法
2017/03/06 Javascript
深入理解Node.js中的进程管理
2017/03/13 Javascript
基于VUE.JS的移动端框架Mint UI的使用
2017/10/11 Javascript
vue2.0 常用的 UI 库实例讲解
2017/12/12 Javascript
微信小程序如何连接Java后台
2019/08/08 Javascript
[42:48]完美世界DOTA2联赛PWL S3 Magma vs INK ICE 第二场 12.11
2020/12/16 DOTA
python实现井字棋游戏
2020/03/30 Python
Python中%r和%s的详解及区别
2017/03/16 Python
python机器学习案例教程——K最近邻算法的实现
2017/12/28 Python
使用Python进行QQ批量登录的实例代码
2018/06/11 Python
Pandas:Series和DataFrame删除指定轴上数据的方法
2018/11/10 Python
Python实现的逻辑回归算法示例【附测试csv文件下载】
2018/12/28 Python
对django xadmin自定义菜单的实例详解
2019/01/03 Python
python实现统计代码行数的小工具
2019/09/19 Python
Django模板标签{% for %}循环,获取制定条数据实例
2020/05/14 Python
CSS3 icon font完全指南(CSS3 font 会取代icon图标)
2013/01/06 HTML / CSS
CSS3中线性颜色渐变的一些实现方法
2015/07/14 HTML / CSS
YesBabyOnline美国:全球性的在线婚纱礼服工厂
2018/05/05 全球购物
孕妇内衣和胸罩:Cake Maternity
2018/07/16 全球购物
幼儿园家长会欢迎词
2014/01/09 职场文书
企业仓管员岗位职责
2014/06/15 职场文书
篮球兴趣小组活动总结
2014/07/07 职场文书
员工安全责任书范本
2014/07/24 职场文书
房地产经营管理专业自荐信
2014/09/02 职场文书
四风问题个人自查剖析材料思想汇报
2014/09/21 职场文书
龙潭大峡谷导游词
2015/02/10 职场文书
普希金的诗歌赏析(3首)
2019/08/20 职场文书
swagger如何返回map字段注释
2021/07/03 Java/Android