sklearn.manifold.TSNE可視化高位數據工具


manifold learning流形學習

多維度數據集非常難於可視化。反而2維或者3維數據很容易通過圖表展示數據本身的內部結構,等價的高維繪圖就遠沒有那么直觀了。為了實現數據集結構的可視化,數據的維度必須通過某種方式降維。

最簡單的降維手段是數據的隨機投影。雖然這種方式實現一定程度的數據結構可視化,但是選擇的隨意性導致結果遠不如意。在隨機投影中,更有趣的結構容易丟失。

​ 為了解決這種問題,人們設計了一系列監督或非監督的線性降維框架,例如Principal Component Analysis(PCA,主成分分析)、Independent Component Analysis(獨立成分分析)、 Linear Discriminant Analysis(線性判別分析)…這些算法定義了特殊的評估量用於多維數據選擇有趣的線性投影,這些手段是有效的,不過經常會錯失數據結構中的非線性項。

​ Manifold Learing是一種非線性降維的手段,可以看作一種生成類似PCA的線性框架,不同的是可以對數據中的非線性結構敏感。雖然存在監督變體,但是典型的流式學習問題是非監督的:它從數據本身學習高維結構,不需要使用既定的分類

t-SNE 

是可視化高維數據的工具。它將數據點之間的相似性轉換為聯合概率,並嘗試最小化低維嵌入和高維數據的聯合概率之間的Kullback-Leibler差異。t-SNE的成本函數不是凸的,即使用不同的初始化,我們可以獲得不同的結果。

如果特征的數量非常多,強烈建議使用另一種降維方法(例如,對於密集數據使用PCA或對於稀疏數據使用TruncatedSVD)將尺寸數量減少到合理的數量(例如50個)。這將抑制一些噪聲並加快樣本之間成對距離的計算。有關更多技巧

用法

反正只需要了解這個函數的大概用途是將特征弄成一坨,變成一個變量,然后和聚類后的label畫圖就OK了,具體原理細節,暫時不深究

class sklearn.manifold.TSNE(n_components=2, *, perplexity=30.0, early_exaggeration=12.0, learning_rate=200.0, 
n_iter=1000, n_iter_without_progress=300, min_grad_norm=1e-07, metric='euclidean', init='random', verbose=0,
random_state=None, method='barnes_hut', angle=0.5, n_jobs=None)

參數什么的請參考官方文檔:https://scikit-learn.org/stable/modules/generated/sklearn.manifold.TSNE.html

這里主要看一些怎么使用

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.cluster import KMeans

X=load_iris().data
kmeans = KMeans(n_clusters=3,random_state=0)
kmeans.fit(X)

labels = kmeans.labels_
labels = pd.DataFrame(labels,columns=['labels'])
X=pd.DataFrame(X)
X.insert(4,'labels',labels)

from sklearn.manifold import TSNE tsne = TSNE() a = tsne.fit_transform(X)
liris = pd.DataFrame(a,index=X.index)

d1 = liris[X['labels']==0]
#plt.plot(d1[0],d1[1],'r.')
d2 = liris[X['labels']==1]
#plt.plot(d2[0],d2[1],'go')
d3 = liris[X['labels']==2]
#plt.plot(d3[0],d3[1],'b*')
plt.plot(d1[0],d1[1],'r.',d2[0],d2[1],'go',d3[0],d3[1],'b*')

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM