資料降維視覺化工具 openTSNE

2021-10-05 04:21:02 字數 2423 閱讀 6290

references

t-sne全稱是 t-distributed stochastic neighbor embedding,一種資料降維和視覺化的方法,文章最先發表於[1]。我們在做一些無監督學習時,如何去評估學到的表徵向量的效果,最直觀的方法就是判斷同類之間是不是形成乙個簇,不同類之間相隔較遠。但是,對於高維(大於三維)向量,我們很難直接用這樣的方法去判斷它們是不是具有這樣的關係。因此,t-sne就是基於這樣的考慮,通過把高維資料壓縮到2維空間上來評估演算法的有效性。

本文主要介紹如何使用opentsne視覺化學到的embedding向量,關於t-sne的推導這裡不展開。

opentsne按功能大致分為兩部分,embedding壓縮和散點圖繪製。embedding壓縮就可以看成是乙個機器學習任務,比如我們先例項化tsne類,然後擬合訓練資料x_train,然後可以得到壓縮之後的二維向量(看具體需求,如果你想要在3維座標系下視覺化,那麼就可以壓縮成三維)。

tsne = tsne(

perplexity=30,

n_iter=50,

metric=

"euclidean"

, callbacks=errorlogger(),

n_jobs=8,

random_state=42,

)embedding_train = tsne.fit(x_train)

這裡有幾個重要的引數:

perplexity: 困惑度,表示了近鄰的數量,例如設perplexity為2,那麼就很有可能得到很多兩個一對的小集群

n_iter: 迭代次數

metric:度量兩個點之間的方式,這裡用歐式距離度量

n_jobs: 執行緒數

擬合了向量之後就是視覺化,視覺化本質上是散點圖繪製。核心方法是:

#這裡三個引數分別是壓縮後的向量,label,每個label的顏色

utils.plot(embedding, y, colors=utils.macosko_colors)

#plot方法下的方法:

ax.scatter(centers[:,

0], centers[:,

1], c=center_colors, s=

48, alpha=

1, edgecolor=

"k")

這裡要想圖畫得清晰直觀,甚至酷炫,顏色的搭配和字型大小必須是多次除錯的引數。上面的macosko_colors代表的就是每個label對應的顏色**,如:

因此我們在視覺化自己模型學到向量時需要自定義label,可選地自定義label對應的顏色。

from sklearn import datasets

from opentsne import tsneembedding

from opentsne import tsne

from opentsne.affinity import perplexitybasednn

from opentsne import initialization

from opentsne.callbacks import errorlogger

import utils

import numpy as np

import matplotlib.pyplot as plt

iris = datasets.load_iris(

)x, y = iris[

"data"

], iris[

"target"

]tsne = tsne(

perplexity=30,

n_iter=50,

metric=

"euclidean"

, callbacks=errorlogger(),

n_jobs=8,

random_state=42,

)embedding = tsne.fit(x)

utils.plot(embedding, y, colors=utils.mouse_10x_colors)

效果:

使用過程中的一些坑

官方文件

t sne資料降維與視覺化工具使用

1.降維方法 特徵降維方法包括 lasso,pca,小波分析,lda,奇異值分解svd,拉普拉斯特徵對映,sparseautoencoder,區域性線性嵌入lle,等距對映isomap。然而t sne方法是目前最好的降維方法。1.1現在降維方法分為線性方法和非線性方法如圖 2.t sne簡介和原理 ...

Git History視覺化工具

今天給大家推薦乙個開源的git提交記錄視覺化檢視工具,操作簡單,還有本地cli可以使用,最重要的是效果炫酷,非常方便!1 在github上的檔案,只需要把檔案路徑中的github.com替換為github.githistory.xyz即可,一步到位 第一種方式雖然簡單,但有些同學可能不服,因為公司專...

Redis 視覺化工具

redis做為現在web應用開發的 搭擔組合,大量的被應用,廣泛用於儲存session資訊,許可權資訊,交易作業等熱資料。redis作為業界最好的快取資料庫,過去幾年發展很快。相對memcached,redis提供了更多種資料型別,包含hash set list等 redis還支援subscribe...