MLGB,人生就是矫情,充满冲动,充满热恋。

tsne的08年的论文看了几遍,发现原理还是蛮简单的,能想到还是不容易(人生的战场是星辰大海,但我们的贡献就是也就是宇宙尘埃)

怎么说呢,现在真的是一个好时机,发不出论文只能说是zz了。08才有人第一次有效的结合pairwise distance和statistic方法。

而tsne几乎是一个很难超越的经典,简单的方程就像是图像处理的双边滤波一样。现在为止好像都没有更好的方法。

官方下了代码之后加上这句话,使用的是最简单的归一化的方法,虽然官方的代码中没有对数据进行归一化的函数,所以加上效果应该会更好(我也没注意minst需不需要或者已经归一化)

def eque(x):
    a,b=x.shape
    H=x
    print x[:,2].max()
    for X in range(a):
        for  Y in range(b):
            H[X][Y]=(x[X][Y]-x[:,Y].min())/(x[:,Y].max()-x[:,Y].min())
    return H

官方代码思想是一遍聚类一遍降维,tsne发明者是傻逼,明明能写两篇论文,好像却写成了一篇可视化论文,其实也是一种比较好的自动聚类方法。

高维数据每个数据点被认为是一种正太分布数据(正太有三好),低维数据同样,然后让高维数据和低维数据相似度最大。又因为t分布好算而且和正太分布逼近,所以用了t分布来算就成了tsne方法。

其实tsne用于machine learning你可以有两种解释(一种解释就是一篇论文,而其中一种解释今年一个团队写成论文发表了)

1:就是对数据可视化找到最好的maping方法,然后就是最好的数据的可视结果 08年的论文

2:找到在最好maping下的聚类结果,那就是结合聚类和降维的一种优秀的聚类方法(把数据和其它数据属于一类的概率为高斯分布改成它属于某一类的概率为高斯分布)

所以你需要进行两个工作:

1:计算每个点的pij(和原有的邻接方法不同的地方是,并不需要指定邻接的数据的数量)

2:求kl distance(python有求解函数,实在不行就迭代呗)

3:找出小的kl distance,然后就是结果了

自己写也很简单。

由于python之中已经能安装tsne的model(如果没有FQ使用这种方式安装tsne)

pip install tsne -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

tsne官方论文代码解读和使用的更多相关文章

  1. Android MVP模式 谷歌官方代码解读

    Google官方MVP Sample代码解读 关于Android程序的构架, 当前(2016.10)最流行的模式即为MVP模式, Google官方提供了Sample代码来展示这种模式的用法. Repo ...

  2. Context Encoder论文及代码解读

    经过秋招和毕业论文的折磨,提交完论文終稿的那一刻总算觉得有多余的时间来搞自己的事情. 研究论文做的是图像修复相关,这里对基于深度学习的图像修复方面的论文和代码进行整理,也算是研究生方向有一个比较好的结 ...

  3. weex官方demo weex-hackernews代码解读(上)

    一.介绍 weex 是阿里出品的一个类似RN的框架,可以使用前端技术来开发移动应用,实现一份代码支持H5,IOS和Android.最新版本的weex已默认将vue.js作为前端框架,而weex-hac ...

  4. Jsoup代码解读之三-Document的输出

    Jsoup代码解读之三-Document的输出   Jsoup官方说明里,一个重要的功能就是output tidy HTML.这里我们看看Jsoup是如何输出HTML的. HTML相关知识 分析代码前 ...

  5. DCGAN 论文简单解读

    DCGAN的全称是Deep Convolution Generative Adversarial Networks(深度卷积生成对抗网络).是2014年Ian J.Goodfellow 的那篇开创性的 ...

  6. 代码解读 | VINS 视觉前端

    本文作者是计算机视觉life公众号成员蔡量力,由于格式问题部分内容显示可能有问题,更好的阅读体验,请查看原文链接:代码解读 | VINS 视觉前端 vins前端概述 在搞清楚VINS前端之前,首先要搞 ...

  7. ORB-SLAM2 论文&代码学习 —— 概览

    转载请注明出处,谢谢 原创作者:MingruiYU 原创链接:https://www.cnblogs.com/MingruiYu/p/12347171.html *** 本文要点: ORB-SLAM2 ...

  8. 优秀开源代码解读之JS与iOS Native Code互调的优雅实现方案

    简介 本篇为大家介绍一个优秀的开源小项目:WebViewJavascriptBridge. 它优雅地实现了在使用UIWebView时JS与ios 的ObjC nativecode之间的互调,支持消息发 ...

  9. SoftmaxLayer and SoftmaxwithLossLayer 代码解读

    SoftmaxLayer and SoftmaxwithLossLayer 代码解读 Wang Xiao 先来看看 SoftmaxWithLoss 在prototext文件中的定义: layer { ...

随机推荐

  1. 79. Word Search

    使用的别人的思路,用一个二维数组记录每一个位置是否用过,然后通过递归来判断每一个位置是否符合 public class Solution { public boolean exist(char[][] ...

  2. avalon的表单验证

    表单验证 avalon内置了强大的表单验证功能,它需要结合ms-duplex, ms-validate, ms-rules这个三个指令一起使用. ms-duplex负责监控每个表单元素的输入. ms- ...

  3. Charles常用的十大功能

    转载:http://www.jianshu.com/p/2745dbb97cc2 简介 Charles是在 Mac 下常用的网络封包截取工具,在做移动开发时,我们为了调试与服务器端的网络通讯协议,常常 ...

  4. kafka Failed to send messages after 3 tries 问题解决

    kafka Failed to send messages after 3 tries. 在kafka0.8开发过程中 生产者测试用例碰到了 Exception in thread "mai ...

  5. Python基础学习-Python中最常见括号()、[]、{}的区别

    Python中最常见括号的区别: 在Python语言中最常见的括号有三种,分别是:小括号().中括号[].花括号{}:其作用也不相同,分别用来代表不同的Python基本内置数据类型. Python中的 ...

  6. UISegmentedControl 的使用

    /** 设置选择器 */ - (void)setUpSegmentCtr { UISegmentedControl *segmentCtr = [[UISegmentedControl alloc] ...

  7. CentOS-7下安装MySQL5.6.22

    参考: http://www.2cto.com/database/201501/371451.html 安装环境   CentOS版本:CentOS-7 因为之前安装过,没有成功,但是有之前安装的文件 ...

  8. DLL注入

    最近的项目涉及了软件破解方面的知识,记录一下. 将dll注入另一个进程. // Inject.cpp : Defines the exported functions for the DLL appl ...

  9. ThinkPad E430光驱面板拆卸方法

    前一阵买了固态硬盘,拆出来的机械硬盘一直放在一边落灰.想着不能这么浪费资源,就买了光驱硬盘架,打算把光驱拆出来换上机械硬盘. 光驱很好拆,把后盖板打开之后,拧下固定的螺丝,用螺丝刀轻轻撬一下,光驱就出 ...

  10. java文件编程总结

    文件编程之一就是文件操作,就是新建,删除,复制,更名 新建文件用createNewFile()方法,要处理IOException异常 新建文件夹用mkdirs()方法 删除一个文件和一个空的文件夹直接 ...