2017-12-12 7 views
0

この本の "TensorFlow Machine Learning Cookbook"のデータ処理では、fit_transformの機能を使用してscikitの機能を学び、tfidfのテキストをトレーニング用に学習します。著者は列車を分離して機能テストする前にすべてのテキストデータを提供します。それは真の行動ですか、それとも最初にデータを分離して、電車でtfidf fit_transform、テストでtransformを実行する必要がありますか?すべてのデータセットまたはトレーニングデータにtfidf

+1

このようなシナリオでは、常に現実世界の問題で何をすべきか考えてください。そこでは、すべての利用可能なデータを列車として、そして目に見えない新しいデータをテストとして扱います。このような場合には、テストデータが利用できないので、あなたは何をしますか?利用可能なデータをトレインとテストに分割するプロセスは、同じデータを複製することです。 –

+1

@Vivek Kumarはい、実際には、実際の問題でデータをテストしていないため、すべてのデータに対するfit_transformのアプローチが真ではありません。 – keramat

+0

はい。したがって、列車のデータに対してのみfit()またはfit_transform()を実行します。 –

答えて

1

私は本を読んでいないし、実際には本の間違いではないかどうかはわからないが、私は2セントを与えるだろう。 scikit学習の文書によると、fit()

するために使用されている

はトレーニングセットから語彙やIDFこちらをご覧ください。一方

fit_transform()

語彙とIDFを学習するために使用される、用語文書行列を返します。

transform()

は、文書長期行列に文書を変換しながら。訓練に

はあなたが適用する必要が設​​定され、テストがセットに fit()transform()(または本質的に両方の操作に参加するだけで fit_transform()が)しかし、あなただけ transform()テストインスタンス(すなわち、文書)に必要なの両方。テストセットは訓練されたモデルが新 見えないデータポイントにも一般化できるかどうかを評価するために使用されている間

は(学習がfit()によって達成される)トレーニングセットは学習目的のために使用されていることに注意してください。

+0

はい、それは正しいです、私たちはトレーニングでテストデータを使うべきではありません。すべてのデータセットにfit_transformを適用すると、トレーニングレベルでテストデータを使用していることを意味します。この2つの方法で結果として得られる語彙も異なります。 – keramat

関連する問題