2012-06-21 5 views
5

私はscikit-learnを使ってテキスト文書をクラスタリングしています。私はそれを行うために、CountVectorizer、TfidfTransformer、およびMiniBatchKMeansクラスを使用しています。 新しいテキスト文書が常にシステムに追加されます。つまり、上記のクラスを使用してテキストを変換し、クラスタを予測する必要があります。私の質問は:どのようにディスクにデータを保存する必要がありますか? 私は単にベクトル化、トランスフォーマー、およびkmeansオブジェクトをピケッとすべきですか? データを保存すればよいですか?もしそうなら、それをどのようにベクトル化、トランスフォーマー、およびkmeansオブジェクトに追加するのですか?sklearnのデータを保存する

すべてのヘルプは大幅に

答えて

6

あなたのやりたいことによって異なります。

トレーニングセットにいくつかの固定されたクラスタセンターを見つけて、後でそれらを再利用して新しいデータのクラスタ割り当てを計算し、モデルを酸っぱくする(またはベクタライザのボキャブラリと他のモデルのコンストラクタパラメータクラスタ中心の位置)はOKです。

新しいデータを使用してクラスタリングを行う場合は、新しいデータと古いデータの結合を使用してパイプライン全体を再トレーニングして、ベクタライザのボキャブラリが新しいフィーチャを作成できるようにすることができます)を作成し、クラスタリングアルゴリズムで完全なデータセットの構造に一層よく一致するクラスタ中心を見つけさせます。

将来的には、ハッシュ・ベクタライザー(最初のビルディング・ブロックとしてこのpull request on hashing transformersを参照)を提供するので、語彙を保管する必要はなくなります(ただし、 "意味(フィーチャディメンションの)。私はここにあなたの前の質問には、この部分に答えているそれらのパラメータのために、独自の表現を使用して、VSモデルを酸洗については

Persist Tf-Idf data

4

をいただければ幸いですええ、私は学習SKとの一般的な答えはpickleと祈ることだと思います。

実装の詳細に依存しない文書化されたシリアライズフォーマットを持っているのと比較して、これは非常に脆弱です。しかし、彼らはこれを知っているかもしれませんし、クラスに後方互換性のない変更を加えないでしょうか?

+0

私たちは、これがどのように壊れやすいの認識している、といいえ、私たちは現在ありません互換性のある変更はすべてMLで議論されなければなりませんが、互換性は通常いくつかのリリースで保持されます。より優れたシリアライゼーションソリューションがまだ見つかりませんでした。 –

+0

Googleの職場では、プロトコルバッファは使いやすいクロスランゲージシリアル化形式の役割を果たします。私の趣味の時間では、私はまた、良い仕事をする倹約を使用しました。 –