我有兩套資料訓練和測試。這兩個資料集分別有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圖,展開後如第三張圖所示。兩點之間的最短距離為藍色實...