scikit-learn 分類 - k近傍法(1)
今日のMusic : Sasha @ Maida Vale
今回フォローするのは、ここの例。
Data
[1] 必要ライブラリを読む。irisのデータを読む。ここで n_neighborsでkの値を設定している。注:kはチューンされるべきパラメタ。本当はこの値を変えて、予測の正確さを検証しなければいけない。
[2] pandasでデータを人間にも読みやすい形にする。データファイルの中身をみると、何を意味するのかチェックすることが大切。下の図のように画像で見るとイメージがわき、それぞれlength/widthに相関はあるのだろうかと解析前に考えて見ること大切。
[3] 例では、人間にイメージしやすいように2次元スペースでplotできるよう、sepal lengthとwidthのデータを選んでいる。他のデータを選びたいときの為に#(コメントアウト)に記入している。他もチェックすること。
このsepal lengthとwidthのデータが一番面白いのでここでは例と同じplotを作る。
hは分類するmeshの粗さ。この値を例えば0.2にしてみて変化をチェックすること。
Estimator - KNeighborsClassifier
[4] KNeighborsの分類をする。weightsをuniform(お隣さんに関係なく一様)とdistance(お隣さんとの距離によって変化させる)とfor loopにより両方で行なう。
その後fit。注:この時Xは全てのデータ(150ある、shapeで確認した)でtestとtrainには分けていない。
あとはZでmodelが立てた予測をだし、plotする。
Classification
分類は図のようになったが、ここで分類のaccuracy(正確さ)を出して、例えばuniformとdistanceのweightのどちらがベターなのか、kの値を変更し高accuracyなkの値を使うとか(tuningするという)、色々検証する必要がある。
ここまでできるのはtechniqueであり、その後の検証がもっとも大切。
この例では全てのデータをtrainに使ったので、次回ではtrainとtestを分けて、testを正しく分類できるか、accuracyを求めてみる。