Menu
CoddyTech

predictメソッド

Coddyの「機械学習入門」コースのレッスン 8/19。

challenge icon

チャレンジ

中級

predict メソッドを完成させてください。

このメソッドは、新しいポイントのリスト X を受け取る必要があります。

各新しいポイントについて、そのポイントと self.points に格納されている他のすべてのポイントとの間の距離を計算します。最も近い self.k 個のポイントのラベルを抽出します。

最も近いポイントの中から多数派のラベルを見つけます。これが予測されるクラスになります。

例えば、以下のようなポイントとラベルがあるとします:

points(1, 5)(5, 0)(3, 2)(8, 1)(4, 4)(7, 7)
labelsABABCA

ここに新しいポイント (3, 3) があります。

このポイントと他のすべてのポイントとの距離は以下の通りです:

points(1, 5)(5, 0)(3, 2)(8, 1)(4, 4)(7, 7)
distance from (3, 3)813129232
labelsABABCA

ここで k = 3 の場合、新しいポイントに最も近い 3 つのポイントを見つける必要があります。最も近いのは (3, 2)、(1, 5)、(4, 4) です。これらのポイントに対応するラベルは A、A、C です。A が2つ、C が1つあります。A が多数派なので、新しいポイントは A と分類されます。

predict メソッドは、新しいポイントに対して分類されたラベルのリストを返す必要があります。

ラベルのリストから多数派のラベルを見つけるには、max(set(labels), key = labels.count) を使用してください。

自分で試してみよう

class KNN:
    def __init__(self, k):
        self.points = None
        self.labels = None
        self.k = k
    
    def distance(self, point_a, point_b):
        # Write your code here
        return (sum([(point_a[i] - point_b[i])**2 for i in range(len(point_a))]))**0.5
    
    def fit(self, X_train, y_train):
        # Write your code here
        self.points = X_train
        self.labels = y_train

    def predict(self, X_test):
        pass

機械学習入門のすべてのレッスン

自分で練習してみよう: Pythonオンラインコンパイラ