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类的基础入门知识
Nov 24 Python
python对html代码进行escape编码的方法
May 04 Python
Python实现Youku视频批量下载功能
Mar 14 Python
Python实现的用户登录系统功能示例
Feb 05 Python
Python3中bytes类型转换为str类型
Sep 27 Python
OpenCV里的imshow()和Matplotlib.pyplot的imshow()的实现
Nov 25 Python
解决Python数据可视化中文部分显示方块问题
May 16 Python
python将下载到本地m3u8视频合成MP4的代码详解
Nov 24 Python
Python中X[:,0]和X[:,1]的用法
May 10 Python
python中%格式表达式实例用法
Jun 18 Python
Python 发送SMTP邮件的简单教程
Jun 24 Python
Python pandas求方差和标准差的方法实例
Aug 04 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中的Session和Cookie
2013/06/21 PHP
PHP积分兑换接口实例
2015/02/09 PHP
PHP程序员不应该忽略的3点
2015/10/09 PHP
php使用PDO执行SQL语句的方法分析
2017/02/16 PHP
jquery $.ajax入门应用一
2008/11/19 Javascript
Jquery进度条插件 Progress Bar小问题解决
2011/07/12 Javascript
统计jQuery中各字符串出现次数的工具
2012/05/03 Javascript
Javascript selection的兼容性写法介绍
2013/12/20 Javascript
jQuery删除节点的三个方法即remove()detach()和empty()
2013/12/27 Javascript
javascript抽象工厂模式详细说明
2014/12/16 Javascript
javascript弹出拖动窗口
2015/08/11 Javascript
JS实现对中文字符串进行utf-8的Base64编码的方法(使其与Java编码相同)
2016/06/21 Javascript
详解NodeJS框架express的路径映射(路由)功能及控制
2017/03/24 NodeJs
微信网页登录逻辑与实现方法
2019/04/29 Javascript
150行代码带你实现微信小程序中的数据侦听
2019/05/17 Javascript
Vue CLI2升级至Vue CLI3的方法步骤
2019/05/20 Javascript
Python中计算三角函数之cos()方法的使用简介
2015/05/15 Python
python决策树之CART分类回归树详解
2017/12/20 Python
Python字典遍历操作实例小结
2019/03/05 Python
Django静态文件加载失败解决方案
2020/08/26 Python
python time()的实例用法
2020/11/03 Python
详解HTML5将footer置于页面最底部的方法(CSS+JS)
2018/10/11 HTML / CSS
Mio Skincare法国官网:身体紧致及孕期身体护理
2018/04/04 全球购物
Ibood荷兰:互联网每日最佳在线优惠
2019/02/28 全球购物
MAC Cosmetics官方网站:魅可专业艺术彩妆
2019/04/10 全球购物
英国户外服装品牌:Craghoppers
2019/04/25 全球购物
法学毕业生自荐信
2013/11/13 职场文书
入党自我评价范文
2014/02/02 职场文书
《列夫托尔斯泰》教学反思
2014/02/10 职场文书
护士自我鉴定总结
2014/03/24 职场文书
品牌服务方案
2014/06/03 职场文书
基层党员对照检查材料
2014/09/24 职场文书
美丽心灵观后感
2015/06/01 职场文书
2016年父亲节寄语
2015/12/04 职场文书
python如何读取.mtx文件
2021/04/22 Python
浅谈MySQL之select优化方案
2021/08/07 MySQL