2017-01-29 6 views
2

Ich möchte eine Sparse Matrix (156060x11780) zu Datenrahmen zu transformieren, aber ich bekomme einen Speicherfehler dies mein CodePandas Datenrahmen Speicher Python

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] 

Ich habe ein Problem in X = vect.fit_transform(df.pop('Phrase')).toarray(). Wie kann ich es lösen?

+0

macht diese Arbeit für Sie 'X = vect.fit_transform (df .pop ('Phrase')). todense() '? – MaxU

+0

no :(Ich versuchte es vor –

+0

Wie viel RAM ist verfügbar? – MaxU

Antwort

3

Try this:

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: für Pandas 0.20+ wir SparseDataFrame direkt von spärlichen Arrays konstruieren können:

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

thaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa Sie –

+0

@AmalKostaliTarghi, froh zu helfen :-) Hat es funktioniert? – MaxU

+0

Ja vielen Dank –

Verwandte Themen