python用tsne降维_tSNE降维

我有两套数据训练和测试。这两个数据集分别有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,而块之间没有任何不一致?在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值