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 の問題は意識しないとならないな・・・