2017-04-06 11 views
0

私はsklearnを使ってクラシファイアをトレーニングしていますが、何か間違っています。下のコードでは、トレーニングと予測のために同じ値を正確に入れていますが、結果は同じではありません。これはどうやって起こるのですか?クラシファイアフィットと同じデータを予測すると異なる結果が出る

text_clf = Pipeline([('vect', CountVectorizer()), 
        ('tfidf', TfidfTransformer()), 
        ('clf', MultinomialNB()), 
]) 
text_clf = text_clf.fit(X, y) 

predicted = text_clf.predict(X) 

print set(np.asarray(y)) == set(predicted) #gives false 

データXは、数字(1と0)のユニコードとyリストのリストです。

答えて

2

一般的に、いいえ、2つは等しくありません。 100%のトレーニング精度でのみ収束する方法を使用しない限り、完璧なフィット感を得ることはできません。

MLで100%の精度を強制すると、一般にがオーバーフィッティングとなり、後で(例えば現実世界の)入力で許容できないほどに性能が低下するというモデルが訓練セットにあてはまります。

にはの精度が必要な場合は、マシンラーニングがすべて問題のパラダイムとなります。適応的なヒューリスティックではなく、決定的な分類が必要です。

+0

私はそれが動作するかどうかを見てみるためにそれをしましたが、明らかに、それはありません、なぜ私は不思議です。私はあなたが言ったことに精通しています。とにかく助けてくれてありがとう。 – Nikola

関連する問題