k-NNの判定方法
CoddyのMachine Learningジャーニー「教師あり学習」セクションの一部。レッスン 6/58。
この章では、k-NNの仕組みを掘り下げます。章の終わりには、あらゆるデータについて、マイルドなチリと辛いチリを示すこの図のようなマップを描けるようになります。
新しい唐辛子にラベルを付けるため、k近傍法はそれに最も近いk個の訓練用唐辛子を見つけ、それらが投票します。
最も近いとは、最小の距離を意味します。これはセクション2で出会ったものです。kを選びます。
model = KNeighborsClassifier(n_neighbors=5)n_neighbors は、別の値を指定しない限り k = 5 です。クラスが 2 つの場合、k が奇数なら同票になることはありません。
チャレンジ
簡単天文学クラブでは、stars.csvにある星を温度と等級によって矮星と巨星に分類します。スターターコードは、新しい星と k を読み込みます。
- 手作業で k 個の最近傍の星を見つけます。
distance列を追加してから、並べ替えます。 - そのうち巨星がいくつあるかを出力し、次に投票で勝った種類を出力します。
- すべての星で学習させた、k の値を使う k-NN モデルで確認します。
別のクラブの星について、k = 5 の場合:
Giants among the nearest 5: 4
By hand: giant
Model: giant自分で試してみよう
import numpy as np
import pandas as pd
from sklearn.neighbors import KNeighborsClassifier
# 恒星ごとに1行:温度は千ケルビン単位、等級(値が小さいほど明るい)、矮星または巨星
stars = pd.read_csv("stars.csv")
X = stars[["temp_kK", "magnitude"]]
y = stars["type"]
# 新しい恒星とk
temp = float(input())
mag = float(input())
k = int(input())
new_star = pd.DataFrame({"temp_kK": [temp], "magnitude": [mag]})
# 以下にコードを書いてください
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
教師あり学習のすべてのレッスン
自分で練習してみよう: Pythonオンラインコンパイラ