K 近傍法回帰アルゴリズムの実装

PythonBeginner
オンラインで実践に進む

はじめに

このプロジェクトでは、Python を使って K 近傍法(K-Nearest Neighbors:KNN)回帰アルゴリズムを実装する方法を学びます。KNN は、広く使われる機械学習手法で、分類問題に一般的に用いられます。ただし、回帰タスクにも適用でき、その目的は連続的な目的値を予測することです。

🎯 タスク

このプロジェクトでは、以下を学びます。

  • KNN 回帰アルゴリズムとその動作原理を理解する方法
  • Python で KNN 回帰アルゴリズムを実装する方法
  • テストデータと学習データの間のユークリッド距離を計算する方法
  • k 個の最も近い近傍を特定し、それらの目的値を取得する方法
  • k 個の最も近い近傍の目的値の平均を計算して、テストデータの出力を予測する方法

🏆 成果

このプロジェクトを完了すると、以下のことができるようになります。

  • Python を使って KNN 回帰アルゴリズムをゼロから実装する
  • KNN アルゴリズムにおいてユークリッド距離を距離尺度として使う
  • KNN 回帰アルゴリズムを適用して連続的な目的値を予測する
  • 機械学習アルゴリズムの実装における実践的なスキルを示す

KNN 回帰アルゴリズムを実装する

このステップでは、Python を使って K 近傍法(K-Nearest Neighbors:KNN)回帰アルゴリズムを実装する方法を学びます。以下の手順に従ってこのステップを完了しましょう。

  1. 好きなコードエディタでknn_regression.pyファイルを開きます。
  2. knn(train_data, train_labels, test_data, k)関数を見つけます。この関数が KNN 回帰アルゴリズムの主な実装になります。
  3. train_dataパラメータは既知のサンプルの特徴データで、train_labelsは既知のサンプルの目的値で、test_dataは 1 つの未知のサンプルの特徴データで、kは K 近傍法で使用する最も近い近傍の数を表します。
  4. knn()関数の中で、まずtest_dataとすべての学習サンプルの間のユークリッド距離を計算します。ユークリッド距離を計算するにはnumpy.sqrt()numpy.sum()関数を使うことができます。
distances = np.sqrt(np.sum((train_data - test_data) ** 2, axis=1))
  1. 次に、距離をソートして最初のk個のインデックスを取得することで、k個の最も近い近傍のインデックスを取得します。
nearest_indices = np.argsort(distances)[:k]
  1. nearest_indicesを使ってk個の最も近い近傍のラベルを取得します。
nearest_labels = train_labels[nearest_indices]
  1. k個の最も近い近傍のラベルの平均を計算して、1 つの未知のサンプルtest_dataの予測目的値を取得します。
predicted_label = np.mean(nearest_labels)
  1. round()関数を使って予測ラベルを最大 2 桁まで丸めます。
predicted_label = round(predicted_label, 2)
  1. 最後に、1 つの未知のサンプルtest_dataの予測目的値を返します。
return predicted_label
  1. knn_regression.pyファイルを保存します。
✨ 解答を確認して練習

KNN 回帰アルゴリズムをテストする

このステップでは、提供されたサンプルを実行することで KNN 回帰アルゴリズムの実装をテストします。

コードエディタでknn_regression.pyファイルを開きます。

ファイルの末尾に以下のテストケースを追加します。

if __name__ == "__main__":
    train_data = np.array(
        [[1, 1], [2, 2], [3, 3], [4, 4], [5, 5], [6, 6], [7, 7], [8, 8], [9, 9], [10, 10]]
    )
    train_labels = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
    test_data = np.array([[1.2, 1.3]])

    result = knn(train_data, train_labels, test_data, k=3)
    print(result)

以下のコマンドを実行してサンプルを実行します。

python3 knn_regression.py

出力は、最大 2 桁まで丸められた 1 つの未知のサンプルの予測目的値でなければなりません。

2.0

おめでとうございます!あなたは成功裏に KNN 回帰アルゴリズムを実装し、提供されたサンプルでテストしました。

✨ 解答を確認して練習

まとめ

おめでとうございます!このプロジェクトを完了しました。あなたは実験技術を向上させるために LabEx でさらに多くの実験を行うことができます。