2016-07-27 8 views
0

私は、sklearn.linear_modelのPerceptronがfit()関数(Documentation)をどのように実行するのかを理解しようとしています。質問は、コードのこの部分から来ている:sklearnパーセプトロン学習

clf = Perceptron() 
clf.fit(train_data, train_answers) 

print('accuracy:', clf.score(train_data, train_answers)) 
accuracy: 0.7 

私はフィッティングの目標は、テストデータの100%の精度で答えを与える分類関数を作成することであると思ったが、一例では、それが唯一の70%を与える上。私は精度が60%のもう一つのデータセットを試しました。

フィッティングプロセスで私は誤解しますか?

+0

あなたは(入力および出力、データなどの品質)で作業している場合に関する詳細をお知らせください。それを提供しない限り、役に立つ答えを得ることは事実上不可能です。 – rpd

+1

機械学習の本を手に入れて、予測誤差、モデル能力、汎化誤差、およびコモディティについて読んでください...あなたはすべての基本を欠いているようです。 Sry。 – sascha

+1

最初の注記では、ドキュメントは「線形モデル」と言います。一般に、機械学習アルゴリズムを訓練しても、訓練データに対して100%の精度は得られません。これは、線形モデルの場合に特に当てはまります。 2つの次元にまたがる2つのクラスのオブジェクトの図を考えてみましょう。クラス点が高度に重なり合っている場合、分類器は、トレーニングデータの100%を分離する(非線形)境界を作成するためには非常に高い分散でなければならない。通常、これは甚大なオーバーフィットを表し、望ましくありません。 –

答えて

0

トレーニングデータパターンの分布によって異なります。下のグラフで、直線を青と赤で分けることができますか?明らかにそうではなく、これがポイントです。トレーニングデータに対して100%の精度を達成するには、データを直線的に分離可能にする必要があります。 Perceptron Learning Algorithmそれ以外の場合は、直線で完全に分離することはできません。

enter image description here