2017-12-19 42 views
0

私は最初のscikit-learnの例を試してみました。私は予測の正確さを評価しようとしています。私は訓練とテストリストがうまくセットアップされていますが、私はそれがランダムな値を与えても〜0.95の精度を得ています。ランダム値に対して分類器の精度をテストするにはどうすればよいですか?

これは私が0/1ラベルをチェックしているためと思われます。ラベルの95%は0なので、0と推測して0.95の精度を得ています(私は思いますか?)。明らかに、これは私が望むものではありません。

分類器が機能しているかどうかを判断するにはどうすればよいでしょうか、意味のある精度値を取得するにはどうすればよいですか?

+0

これはプログラミングに関する質問ではありません。 Cross Validatedに移動するようにフラグを立てる必要があります(まだ回答がない場合) –

答えて

1

あなたは明確なクラスの不均衡の問題があります。あなたのクラシファイアは、それが正しい時間の95%になることを知っているいつも0を予測しています。あなたは、あなたのフィットしたクラシファイアでpredict(X_test)を呼び出すことによってこれを検査することができます。すべての値が0の場合、これが当てはまります。

モデルがどのように実行されるかについてより良いアイデアを得るには、1というラベルの付いたデータをアップサンプリングするか、0というラベルの付いたデータをダウンサンプリングします。このpackageは、scikit-learnを構築し、多数のリサンプリングメソッドを実装しています。あるいは、scikit learns resamplingメソッドを使用することもできます。あなたのために新しいデータポイントをブートストラップします。

+0

ありがとうございます。すべてのテストデータは、理想的には50/50スプリットまたは0/1にする必要がありますか?これは標準的なデータ準備タスクですか? – john

+0

理想的には、ラベルのテスト割合をトレーニングの割合に合わせることが望まれます。これは[層状折りたたみ](http://scikit-learn.org/stable/modules/generated/sklearn.model_selection.StratifiedKFold.html)を通じて達成することができます。 – Harpal

関連する問題