Magicode logo
Magicode
1

K近傍によるアヤメの分類

K近傍法とは、入力として与えられたデータ群に対して、未知のデータの中心から近い周辺の既知のデータ K 個を集め、それらの分類を多数決で決めるという手法です。以下では K 近傍法を Go 言語でどの様に実装するかを解説します。

機械学習によく利用されるアヤメの品種を入力データとして用います。

アヤメの「がく」と「はなびら」について、それぞれの幅と高さを属性とし、それに対応した品種名が並ぶデータフォーマットです。CSV では左から4カラムが入力となる属性、残り1カラムが分類となる品種になります。

まずはこの CSV を扱いやすいように、float64 型の属性4カラムのスライス、また各行に対応した string 型の分類名に分ける関数を用意します。


[[5.1 3.5 1.4 0.2] [4.9 3 1.4 0.2] [4.7 3.2 1.3 0.2]] [Iris-setosa Iris-setosa Iris-setosa]

学習データとテストデータに分けましょう。半分を学習データ、残りをテストデータにします。


[[4.9 3 1.4 0.2] [4.6 3.1 1.5 0.2] [5.4 3.9 1.7 0.4]] [Iris-setosa Iris-setosa Iris-setosa] [[5.1 3.5 1.4 0.2] [4.7 3.2 1.3 0.2] [5 3.6 1.4 0.2]] [Iris-setosa Iris-setosa Iris-setosa]

以下が K 近傍の実装になります。


実際に実行してみましょう。


[[4.9 3 1.4 0.2] [4.6 3.1 1.5 0.2] [5.4 3.9 1.7 0.4]] [Iris-setosa Iris-setosa Iris-setosa]

predicted の各行は、testX の各行から推論した分類名になっています。元の結果と比較して、どれくらい正しく分類できたか調べましょう。


98.666667%

まずまずの結果ではないでしょうか。

Discussion

コメントにはログインが必要です。