sklearn 0.11 の LogisticRegression オブジェクトを使用して、約 80,000 の特徴を持つ 200,000 の観測にモデルを適合させようとしています。目標は、短いテキストの説明を 800 クラスのうちの 1 つに分類することです。
分類子 pythonw.exe に適合させようとすると、次のようになります。
アプリケーション エラー「... の命令は 0x00000000 のメモリを参照しました」。メモリに書き込めませんでした。」
特徴は非常にまばらで、観測ごとに約 10 個であり、バイナリ (1 または 0) であるため、エンベロープ計算の裏で、4 GB の RAM でメモリ要件を処理できるはずですが、そうではないようです。場合があります。モデルは、使用する観測数や機能が少ない場合にのみ適合します。
どちらかといえば、もっと観察や機能を使いたいです。私の素朴な理解は、舞台裏で物事を実行しているliblinearライブラリがそれをサポートできるということです。さらにいくつかの観測を絞り込む方法についてのアイデアはありますか?
私のコードは次のようになります。
y_vectorizer = LabelVectorizer(y) # my custom vectorizer for labels
y = y_vectorizer.fit_transform(y)
x_vectorizer = CountVectorizer(binary = True, analyzer = features)
x = x_vectorizer.fit_transform(x)
clf = LogisticRegression()
clf.fit(x, y)
アナライザーに渡す features() 関数は、各観測で検出された機能を示す文字列のリストを返すだけです。
私は Python 2.7、sklearn 0.11、4 GB の RAM を搭載した Windows XP を使用しています。