見出し画像

scikit-learn 分類 - k近傍法(1)

今日のMusic : Sasha @ Maida Vale

今回フォローするのは、ここの例。

Data

[1] 必要ライブラリを読む。irisのデータを読む。ここで n_neighborsでkの値を設定している。注:kはチューンされるべきパラメタ。本当はこの値を変えて、予測の正確さを検証しなければいけない。

画像2

[2] pandasでデータを人間にも読みやすい形にする。データファイルの中身をみると、何を意味するのかチェックすることが大切。下ののように画像で見るとイメージがわき、それぞれlength/widthに相関はあるのだろうかと解析前に考えて見ること大切。

画像1

画像3

[3] では、人間にイメージしやすいように2次元スペースでplotできるよう、sepal lengthとwidthのデータを選んでいる。他のデータを選びたいときの為に#(コメントアウト)に記入している。他もチェックすること。

このsepal lengthとwidthのデータが一番面白いのでここでは例と同じplotを作る。

hは分類するmeshの粗さ。この値を例えば0.2にしてみて変化をチェックすること。

画像4

Estimator - KNeighborsClassifier

[4] KNeighborsの分類をする。weightsをuniform(お隣さんに関係なく一様)とdistance(お隣さんとの距離によって変化させる)とfor loopにより両方で行なう。

その後fit。注:この時Xは全てのデータ(150ある、shapeで確認した)でtestとtrainには分けていない。

あとはZでmodelが立てた予測をだし、plotする。

画像5

Classification

分類は図のようになったが、ここで分類のaccuracy(正確さ)を出して、例えばuniformとdistanceのweightのどちらがベターなのか、kの値を変更し高accuracyなkの値を使うとか(tuningするという)、色々検証する必要がある。

ここまでできるのはtechniqueであり、その後の検証がもっとも大切。

この例では全てのデータをtrainに使ったので、次回ではtrainとtestを分けて、testを正しく分類できるか、accuracyを求めてみる。

画像6


いいなと思ったら応援しよう!