python用tsne降維 tSNE降維

2021-10-19 03:23:51 字數 1037 閱讀 8953

我有兩套資料訓練和測試。這兩個資料集分別有30213和30235個專案,每個專案有66個維度。在

我正在嘗試應用scikit learn的t-sne將維數降到2。由於資料集很大,如果我試圖一次性處理整個資料,我會遇到記憶體錯誤,我會嘗試將它們分成塊,然後一次轉換乙個塊,如下所示:tsne = manifold.tsne(n_components=2, perplexity=30, init='pca', random_state=0)

x_tsne_train = np.array( [ [ 0.0 for j in range( 2 ) ] for i in range( x_train.shape[0] ) ] )

x_tsne_test = np.array( [ [ 0.0 for j in range( 2 ) ] for i in range( x_test.shape[0] ) ] )

d = ( ( x_train, x_tsne_train ), ( x_test, x_tsne_test ) )

chunk = 5000

for z in d:

x, x_tsne = z[0], z[1]

pstart, pend = 0, 0

while pend < x.shape[0]:

if pend + chunk < x.shape[0]:

pend = pstart + chunk

else:

pend = x.shape[0]

print 'pstart = ', pstart, 'pend = ', pend

x_part = x[pstart:pend]

x_tsne[pstart:pend] += tsne.fit_transform(x_part)

pstart = pend

在沒有執行相同的記憶體項的情況下,執行不同的記憶體項的輸出。這可能是由於擬合和轉換操作同時發生在每個資料塊上。但是如果我試圖用tsne.fit(x_train)來擬合列車資料,我得到memoryerror。如何正確地將列車和測試集中的所有資料項的維數降到2,而塊之間沒有任何不一致?在

降維演算法 t SNE和UMAP的python實現

from sklearn import manifold t sne 傾向於儲存區域性特徵,訓練較慢 for i in range listlength my value i np.array my value i reshape 1,64 tsne manifold.tsne n componen...

python 降維與資料聚類之 TSNE

計算機可以處理任意多維的資料集,但我們人類認知只侷限於3維空間,計算機依然需要我們,所以需要通過一些方法有效的視覺化高維資料。通過觀察現實世界的資料集發現其存在一些較低的本徵維度,同時,盡可能多地保持高維資料的重要特徵。在高維空間相似的資料點,對映到低維空間距離也是相似的。常規的做法是用歐式距離表示...

tSNE 高維資料降維視覺化(理論部分)

t sne是一種降維方法,pca主成分分析 lda等屬於線性降維,t sne屬於非線性降維,是一種流形學習方法 manifold learning 如圖所示的曲面上,兩點之間的歐式距離為紅色虛線所示,藍色實線為兩點之間的測地線距離,第二張圖為knn圖,展開後如第三張圖所示。兩點之間的最短距離為藍色實...