纪念一下我的第一篇技术贴
#coding=UTF-8
from numpy import *
import scipy.io as sio
import os
import matplotlib.pyplot as pltdef lle(data, K, d):N = data.shape[0]   #求数组的行数
    D = data.shape[1]   #求数组的列数
    X = mat(data).T        #mat()方法使data数据转换为矩阵。.T 是求转置
    X_2 = sum(data**2, axis=1)      #矩阵X中每列元素平方后相加
    #行方向吧X2 复制N份,列方向上复制1份
    dis = tile(X_2, (N, 1)) - tile(array([X_2]).T, (1, N)) - 2*dot(data, data.T)index = argsort(dis)    #从小到大排序返回索引值
    neighbour = index[:, 1:K+1]     #每个点未排序前的位置序号
    #step2:计算重构权值
    if K > D:tol = 1e-3
    else:tol = 0
    W = mat(zeros((K, N)))for ii in range(N):Q= X[:, neighbour[ii]]-tile(X[:, ii], (1, K))   #Q=[Xi-Zi1,....]
        C = Q.T*Q                                      #本地协方差
        C = C + eye(K) * tol * trace(C)                 #(K>D时要正则化)C+的部分迭代终止误差限,防止C过小,对数据正则化,为了数据的统一
        W[:, ii] = linalg.inv(C)*mat(ones((K, 1)))      #
        W[:, ii] = W[:, ii] / sum(W[:, ii])             #归一化,计算权重矩阵
    #计算矩阵M=(I-W_).T*(I-W_)的最小d个非零特征值对应的特征向量
    W_ = zeros((N,N))for i in range(N):W_[i][neighbour[i]] = array(W[:, i].T)[0]W_ = mat(W_)I = mat(eye(N))M = (I-W_).T*(I-W_)eig, vec = linalg.eig(mat(M))order = argsort(eig)vec = vec[:, order]Y = vec[:, 1:d+1]return array(Y)if __name__=="__main__":path = './synthetic_data'
    data_name = 'Gaussian_1000.mat'
    save_path = './synthetic_result'
    data_path = path + './' + data_nameMAT = sio.loadmat(data_path)d = 2
    data = MAT['X']c = MAT['ColorVector']K = 10
    Y = lle(data, K, d)if not os.path.exists(save_path):os.mkdir(save_path)sio.savemat(save_path + r"/" + str(d) + 'D' + data_name, {'Y': Y})fig = plt.figure(1)plt.scatter(Y[:, 0], Y[:, 1], c=c, cmap=plt.cm.jet)plt.show()print 'complete'

Locally Linear Emding(LLE降维) 算法讲解及Python 实现相关推荐

  1. 【Python机器学习】PCA降维算法讲解及二维、高维数据可视化降维实战(附源码 超详细)

    需要全部代码请点赞关注收藏后评论区留言私信~~~ 维数灾难 维数灾难是指在涉及到向量计算的问题中,当维数增加时,空间的体积增长得很快,使得可用的数据在空间中的分布变得稀疏,向量的计算量呈指数倍增长的一 ...

  2. 局部线性嵌入(Locally Linear Embedding, LLE)

    主要思想 LLE将 D D D维特征 X = [ x 1 , x 2 , ⋯ , x N ] ∈ R D × N \mathbf{X}=[\mathbf{x}_1, \mathbf{x}_2, \cd ...

  3. K近邻算法讲解与python实现(附源码demo下载链接)

    k近邻算法概述 对应demo源码及数据:传送门 K近邻(k-Nearest Neighbor,简称kNN)算法,是一种应用很广泛的监督学习算法.它非常有效且易于掌握,其工作机制也很简单:给定测试样本, ...

  4. 10 降维算法(PCA降维/LDA分类/NMF非负矩阵)

    数据降维简介 降维就是一种对高维度特征数据预处理方法.降维是将高维度的数据保留下最重要的一些特征,去除噪声和不重要的特征,从而实现提升数据处理速度的目的. 降维具有如下一些优点: 减少所需的存储空间. ...

  5. 机器学习降维算法三:LLE (Locally Linear Embedding) 局部线性嵌入

    LLE Locally linear embedding(LLE)[1] 是一种非线性降维算法,它能够使降维后的数据较好地保持原有流形结构.LLE可以说是流形学习方法最经典的工作之一.很多后续的流形学 ...

  6. 四大机器学习降维算法:PCA、LDA、LLE、Laplacian Eigenmaps

    四大机器学习降维算法:PCA.LDA.LLE.Laplacian Eigenmaps 引言 机器学习领域中所谓的降维就是指采用某种映射方法,将原高维空间中的数据点映射到低维度的空间中.降维的本质是学习 ...

  7. 第五章 LLE——Locally Linear Embedding

    [IOC] 概念 Locally Linear Embedding LLE LLE是一种非线性的降维方法,数据是局部线性的,也就是在小范围内,数据是线性的,那每个数据点就可以用k邻近的数据点的线性组合 ...

  8. PCA、LDA、MDS、LLE、TSNE等降维算法的Python实现

    整理 | 夕颜 出品 | AI科技大本营(ID:rgznai100) [导读]网上关于各种降维算法的资料参差不齐,但大部分不提供源代码.近日,有人在 GitHub 上整理了一些经典降维算法的 Demo ...

  9. python用tsne降维_哈工大硕士实现了 11 种经典数据降维算法,源代码库已开放

    网上关于各种降维算法的资料参差不齐,同时大部分不提供源代码.这里有个 GitHub 项目整理了使用 Python 实现了 11 种经典的数据抽取(数据降维)算法,包括:PCA.LDA.MDS.LLE. ...

最新文章

  1. 还有多久才能用上2000元以下的5G手机?答案来了
  2. C++中的重载、覆盖、隐藏对比
  3. 《编写高质量Python代码的59个有效方法》——第10条:尽量用enumerate取代range
  4. 作业4(列表增加或者修改)
  5. spark官方文档_Apache Spark 文档传送门
  6. 如何实现一个优质的微服务框架:Apache ServiceComb 的开放性设计
  7. Unity2017.1官方UGUI文档翻译——Scrollbar
  8. 通俗易懂SpringMVC整体框架理解
  9. 假如购买的期房不小心烂尾了,那银行贷款是否可以不还了?
  10. 自动化测试中Python与C/C++的混合使用
  11. [Bugku][Web][CTF] 9-15 write up
  12. python 描述性分析_描述性分析-1对被解释变量进行描述
  13. bzoj 3379: [Usaco2004 Open]Turning in Homework 交作业(区间DP)
  14. 190623每日一句
  15. win10 把软件窗口背景设置成豆沙绿
  16. DaZeng:Vue全家桶实现小米商城(二)
  17. EXCEL中数字显示为E+18且尾数为0的解决方法
  18. 老树发新芽-前后端分离实践
  19. Titan数据库简介
  20. 在Spring MVC框架下利用RESTful API和MongoDB实现用户留言与邮件反馈

热门文章

  1. 暴力拆解联想台式机键盘
  2. making sure all `forward` function outputs participate in calculating loss.
  3. VMProtect SDK使用日记
  4. 百度地图开发者APPKey获取
  5. ntoskrnl.exe 占用 80 端口 怎样关闭 system 占用80端口的pid为4的进程
  6. 嵌入式实时操作系统10——系统时钟节拍
  7. 个推报错result=AppidError
  8. 操作word文档(二)
  9. 剖析《商道》主人公林尚沃
  10. <fieldset> 标签