2016-08-01 16 views
4

私はちょうどこれは私が最近bag of words introduction : kaggleを練習していた私はそれsklearn countvectorizerのfit_transformとtransformの違いは何ですか?

のために非常に申し訳なく思って愚かに聞こえるならば、私はいくつかのことをクリアしたいので、ランダムフォレストを学び始めました:

vectorizer.fit_transformを使用して( 「* 洗浄レビューのリストに*」)今

我々はfit_predic を使用電車のレビューの単語列の袋を準備していたとき、 t列車のレビューのリストに、今私はfit_predictが2つのことを知っている>まずそれはデータに適合し、の語彙を知っていて、各レビューでベクトルを作ります。

ので、我々はvectorizer.transform(「クリーン列車のレビューのリスト」)を使用する場合、これはちょうど、各レビューのためにベクターにテストレビューのリストを変換します。

私の質問は.....なぜ使用しないでくださいfit_transformもテストリストにあります!

我々はfit_transform使用していないときに我々は、本質的に言っている:私は私はあなたに私の将来を与えてみましょう、それはそれはを過剰適合につながると言う文書に意味が、それはとにかくそれを使用するために私には意味があるん待ちます列車のレビューの最も頻繁な単語を使用してテストレビューの特徴ベクトルを作る!どうしてテスト用の配列の中で最も頻繁に使われる単語を使って配列を作るのでしょうか?

ランダムなケアはどういう意味ですか?我々は無作為の森林を与える場合列車の特徴配列と列車の機能の感情は動作し、それ自身を訓練し、テストフィーチャ配列感情の予測を与えるだけではありません。

注:私は

答えて

5

あなたは、テストデータのfit_transformをしない..私はより明確にする質問を更新しますお答えしようとすると、正しい方法ではなく、あなたの人として求められていない可能性があり、とき理由あなたがランダムフォレストに合っている場合、ランダムフォレストは、それを提供する機能の値に基づいて分類ルールを学習します。これらのルールをテストセットを分類するために適用する場合は、テストフィーチャが同じボキャブラリを使用して同じ方法で計算されることを確認する必要があります。トレーニングの語彙とテストフィーチャが異なる場合、フィーチャは、ドキュメントが訓練されたものとは別の語彙を反映するため、実際には意味をなさないでしょう。

我々は具体的には約CountVectorizerを話せばさて、その後、あなたのトレーニングデータは、以下の3つの文を持たせ、次の例を考えてみます。

  1. 犬は黒です。
  2. 空は青です。
  3. 犬が踊っています。

このための語彙セットは{Dog、is、black、sky、blue、dancing}になります。今あなたが訓練するランダムフォレストは、これら6つの語彙の数に基づいてルールを学習しようとします。したがって、あなたの特徴は長さ6のベクトルになります。今度は、テストセットが次のようになっていれば:

  1. 犬は白です。
  2. 空は黒です。

これで、fit_transformのテストデータを使用すると、ボキャブラリは{Dog、white、is、Sky、black}のようになります。したがって、各文書は、これらの各用語の数を示す長さ5のベクトルで表されます。今、これはリンゴとオレンジを比較するようなものになります。あなたは前の語彙の数の規則を学び、それらの規則はこの語彙には適用できません。これがトレーニングデータのfitのみである理由です。

希望に役立ちます!

関連する問題