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基础教程之popen函数操作其它程序的输入和输出示例
Feb 10 Python
Python读写unicode文件的方法
Jul 10 Python
简单讲解Python中的闭包
Aug 11 Python
Python操作Access数据库基本步骤分析
Sep 19 Python
Python中字符串格式化str.format的详细介绍
Feb 17 Python
Pandas:Series和DataFrame删除指定轴上数据的方法
Nov 10 Python
详解Python解决抓取内容乱码问题(decode和encode解码)
Mar 29 Python
numpy和pandas中数组的合并、拉直和重塑实例
Jun 28 Python
django的auth认证,authenticate和装饰器功能详解
Jul 25 Python
python+opencv3.4.0 实现HOG+SVM行人检测的示例代码
Jan 28 Python
Python数据可视化之Seaborn的安装及使用
Apr 19 Python
Python 第三方库 openpyxl 的安装过程
Dec 24 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
ftp类(example.php)
2006/10/09 PHP
php 网页游戏开发入门教程一(webgame+design)
2009/10/26 PHP
php自定义hash函数实例
2015/05/05 PHP
PHP实现路由映射到指定控制器
2016/08/13 PHP
新页面打开实际尺寸的图片
2006/08/25 Javascript
jquery实现固定顶部导航效果(仿蘑菇街)
2013/03/21 Javascript
jQuery 全选/反选以及单击行改变背景色实例
2013/07/02 Javascript
关于vue.js弹窗组件的知识点总结
2016/09/11 Javascript
AngularJS入门教程之与服务器(Ajax)交互操作示例【附完整demo源码下载】
2016/11/02 Javascript
jQuery Form表单取值的方法
2017/01/11 Javascript
完美解决input[type=number]无法显示非数字字符的问题
2017/02/28 Javascript
Vue.js实现的表格增加删除demo示例
2018/05/22 Javascript
javascript获取元素的计算样式
2019/05/24 Javascript
js设置默认时间跨度过程详解
2019/07/17 Javascript
教你如何用Node实现API的转发(某音乐)
2019/09/20 Javascript
Django数据库表反向生成实例解析
2018/02/06 Python
Python使用Windows API创建窗口示例【基于win32gui模块】
2018/05/09 Python
python实现植物大战僵尸游戏实例代码
2019/06/10 Python
Python英文文章词频统计(14份剑桥真题词频统计)
2019/10/13 Python
PyQt5如何将.ui文件转换为.py文件的实例代码
2020/05/26 Python
Python 私有属性和私有方法应用场景分析
2020/06/19 Python
python如何实现读取并显示图片(不需要图形界面)
2020/07/08 Python
python 基于Apscheduler实现定时任务
2020/12/15 Python
英国男士时尚网站:Dandy Fellow
2018/02/09 全球购物
会话Bean的种类
2013/11/07 面试题
主持人演讲稿范文
2013/12/28 职场文书
二年级体育教学反思
2014/01/15 职场文书
运动会邀请函范文
2014/01/31 职场文书
岗位职责的构建方法
2014/02/01 职场文书
六查六看剖析材料
2014/02/15 职场文书
大三学习计划书范文
2014/05/02 职场文书
离婚协议书范文2015
2015/01/26 职场文书
学校中秋节活动总结
2015/03/23 职场文书
党支部考察鉴定意见
2015/06/02 职场文书
导游词之桂林山水
2019/09/20 职场文书
python ansible自动化运维工具执行流程
2021/06/24 Python