2016-12-14 4 views
1

아나콘다에서 Jupyter 노트북과 python 2.7을 사용하고 있습니다. 나는 n 개의 더 낮은 차원으로 압축 할 필요가있는 대략 250,000 차원 데이터 세트를 가지고있다. 나는 scikit TSNE를 사용하고 있습니다. n=5 또는 n=10에 대한 TSNE를 실행할 때 제대로 작동합니다. 그러나 n=50 이상으로 가면 다음 메시지가 표시됩니다. "The kernel appears to have died." 오류 메시지가 표시되지 않습니다. 문제가 무엇입니까? 메모리 과부하가 원인입니까? Jupyter가 아닌 스크립트로 터미널에서 코드를 실행해야합니까? Jupyter 노트북이 scikit TSNE 차원 감소를 위해 충돌합니다.

내 TSNE 기능

:

def tsne_to_n_dimensions(n): 
    start=timer() 
    #tsne 
    print diff_df.shape 
    tsne = sklearn.manifold.TSNE(n_components=n,verbose=2) 
    data_nd_tsne =tsne.fit_transform(diff_df) 

    calculate stuff from data_nd_tsne   
    return stuff 

그리고 diff_df이

내가 thisthis 겪었 글로벌 팬더 데이터 프레임이지만 해결책을 찾을 수 없습니다가

+1

: // man7

그래서 기본적으로 그냥 일반 TSNEscikit에서 대신 다음을 수행해야합니다 .org/linux/man-pages/man1/top.1.html). 'scikit'의 tSNE에 대한 문서를 기록해 두는 것이 좋습니다. "차원 수를 합리적인 수준으로 줄이기 위해 다른 차원 감소 방법 (예 : 밀도가 높은 데이터의 경우 PCA 또는 희소 데이터의 경우 TruncatedSVD)을 사용하는 것이 좋습니다 (예 : 50) 특징 수가 많으면 노이즈가 줄어들고 샘플 간의 쌍 거리 계산 속도가 빨라집니다. 자세한 내용은 Laurens van der Maaten의 FAQ [2]를 참조하십시오. – ncfirth

답변

3

내가 찾은 가지고 솔루션은 또한 Barnes-Hut의 t- 분산 확률 적 이웃 임베딩의 구현 인 python-bhtsne을 사용합니다.

매우 쉽게 구현할 수 있으며 동일한 매개 변수를 사용하여 tsne을 실행할 때마다 동일한 출력을 얻을 수있는 옵션을 제공합니다 (scikit 구현에 없습니다).

Laurens van der Maaten이 원래 구현 한 Python 래퍼입니다. 당신은 [최고] (HTTP를 사용하여 프로세스가 사용하는 메모리 양을 추적 할 수 있습니다

from bhtsne import tsne 
data_nd_tsne = tsne(diff_df) 
관련 문제