らんだむな記憶

blogというものを体験してみようか!的なー

Python 機械学習プログラミング 第3章(1)

https://github.com/rasbt/python-machine-learning-book-2nd-edition/blob/master/code/ch03/ch03.py#L130のところで

DeprecationWarning: n_iter parameter is deprecated in 0.19 and will be removed in 0.21. Use max_iter and tol instead.

が出ちゃうので、

ppn = Perceptron(max_iter=40, tol=1e-3, eta0=0.1, random_state=1)

にしてみたら・・・ Accuracy: 0.69 になってしまった・・・。 sklearn 0.20.2 に依存する現象なのかな?ということで、トレーニングデータとテストデータの比率を変更して観測してみたりする。

test_size n_iter max_iter tol Accuracy
0.2 40 None None 0.70
0.3 40 None None 0.80
0.4 40 None None 0.70
0.2 None 40 1e-3 0.97
0.3 None 40 1e-3 0.69
0.4 None 40 1e-3 0.72

という結果だったので、そんなに神経質にならなくても良いかなと思った。
テキストの記載と大幅に値が異なるように感じられた場合に何が悪いのだろうかと悩んでしまう・・・というのも素人のあるあるだろうか・・・

続きにこうなる原因が記載されているが、考えて見ると何も考えずに sklearn を使って「機械学習したぜ!」とかやるとはまる・・・線形分離の可能性や勾配降下法の収束性や overfitting の問題は意識しないとならないな・・・