2017-01-29 5 views
2

은 내가 dataframe에 스파 스 매트릭스 (156060x11780를) 변환하려는하지만 난 내가 X = vect.fit_transform(df.pop('Phrase')).toarray()에서 문제가이 내 코드팬더 dataframe 메모리 파이썬

vect = TfidfVectorizer(sublinear_tf=True, analyzer='word', 
         stop_words='english' , tokenizer=tokenize, 
         strip_accents = 'ascii') 

X = vect.fit_transform(df.pop('Phrase')).toarray() 

for i, col in enumerate(vect.get_feature_names()): 
    df[col] = X[:, i] 

인 메모리 오류가 발생합니다. 어떻게 해결할 수 있습니까?

+0

는'X = vect.fit_transform이 작업을 수행 (DF를 .pop ('Phrase')). todense()'? – MaxU

+0

더 :(내가 –

+0

전에 그것을 시도 얼마나 RAM은 (는) 사용 가능? :-)를 기꺼이 도와 당신 – MaxU

답변

3

이 시도 :

from sklearn.feature_extraction.text import TfidfVectorizer 
vect = TfidfVectorizer(sublinear_tf=True, analyzer='word', stop_words='english', 
         tokenizer=tokenize, 
         strip_accents='ascii',dtype=np.float16) 
X = vect.fit_transform(df.pop('Phrase')) # NOTE: `.toarray()` was removed 


for i, col in enumerate(vect.get_feature_names()): 
    df[col] = pd.SparseSeries(X[:, i].toarray().reshape(-1,), fill_value=0) 

UPDATE : 우리는 희소 배열에서 직접 SparseDataFrame을 구성 할 수 있습니다 0.20+ 팬더에 대한 :

from sklearn.feature_extraction.text import TfidfVectorizer 
vect = TfidfVectorizer(sublinear_tf=True, analyzer='word', stop_words='english', 
         tokenizer=tokenize, 
         strip_accents='ascii',dtype=np.float16) 

df = pd.SparseDataFrame(vect.fit_transform(df.pop('Phrase')), 
         columns=vect.get_feature_names(), 
         index=df.index) 
+0

을 사용할 수 있습니까? –

+0

@AmalKostaliTarghi이 작동 했나 thaaaaaaaaaaaaaaaaaaaaaaaaaaaaaank – MaxU

+0

네, 정말 고마워요. –