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

PythonPythonBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

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

🎯 タスク

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

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

🏆 成果

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

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

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/ModulesandPackagesGroup(["Modules and Packages"]) python(("Python")) -.-> python/DataScienceandMachineLearningGroup(["Data Science and Machine Learning"]) python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python/DataStructuresGroup -.-> python/lists("Lists") python/FunctionsGroup -.-> python/function_definition("Function Definition") python/ModulesandPackagesGroup -.-> python/using_packages("Using Packages") python/DataScienceandMachineLearningGroup -.-> python/numerical_computing("Numerical Computing") python/DataScienceandMachineLearningGroup -.-> python/machine_learning("Machine Learning") subgraph Lab Skills python/lists -.-> lab-300234{{"K 近傍法回帰アルゴリズムの実装"}} python/function_definition -.-> lab-300234{{"K 近傍法回帰アルゴリズムの実装"}} python/using_packages -.-> lab-300234{{"K 近傍法回帰アルゴリズムの実装"}} python/numerical_computing -.-> lab-300234{{"K 近傍法回帰アルゴリズムの実装"}} python/machine_learning -.-> lab-300234{{"K 近傍法回帰アルゴリズムの実装"}} end

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でさらに多くの実験を行うことができます。