2016-10-15 11 views
1

でベクトル化scikit-学びます。私はセグメント化された私のディスク上の文書、私のVPSの9ギガバイトだけ4GBのメモリを持っている必要があり、大きなデータセット

はどのようにして、初期化時に、すべてのコーパスをロードせずに設定されているすべてのデータのベクトル化することができますか?サンプルコードはありますか?次のように

私のコードは次のとおりです。

contents = [open('./seg_corpus/' + filename).read() 
      for filename in filenames] 
vectorizer = CountVectorizer(stop_words=stop_words) 
vectorizer.fit(contents) 

答えて

1

ではなく、メモリにすべてのテキストをロードするだけfit方法にファイルを処理しますが、あなたはCountVectorizerコンストラクタでinput='file'を指定する必要がありますを渡すことができ、これを試してみてください。

contents = [open('./seg_corpus/' + filename) 
     for filename in filenames] 
vectorizer = CountVectorizer(stop_words=stop_words, input='file') 
vectorizer.fit(contents) 
+0

ありがとうございました。 Anothorの質問、「入力= 『ファイル』」のようなscikit学習の関数kmeans上のいくつかのトリックがありますが、私はまた、メモリにスパース行列を読み込むことができません。 –

+0

@KalenBlueは、それはあなたがメモリにスパース行列を読み込むことができない、非常に奇妙だ、それはとても大きいのですか?それともKMeansを使用しようとしているときに何らかのエラーが発生しますか?なぜなら、疎な行列をメモリにロードすることができないとき、プログラマは間違っているからです。 とにかく、異なるバッチに行列を格納し、別々にロードして、partial_fitメソッドを使って 'MiniBatchKMeans'を使用することができます。 また、(簡単な方法で)特徴空間を圧縮し、疎な行列をメモリに保持することができます。例えば、あまりにも頻繁にnグラムで作成された、あるいはあまりにも稀な、すべてのフィーチャを削除してみてください。 –

+0

max_features、max_df、およびmin_dfパラメータで再生すると、CountVectorizerの結果の行列を小さくできます。 –

関連する問題