はじめに
このプロジェクトでは、Python を使って K 近傍法(K-Nearest Neighbors:KNN)回帰アルゴリズムを実装する方法を学びます。KNN は、広く使われる機械学習手法で、分類問題に一般的に用いられます。ただし、回帰タスクにも適用でき、その目的は連続的な目的値を予測することです。
🎯 タスク
このプロジェクトでは、以下を学びます。
- KNN 回帰アルゴリズムとその動作原理を理解する方法
- Python で KNN 回帰アルゴリズムを実装する方法
- テストデータと学習データの間のユークリッド距離を計算する方法
- k 個の最も近い近傍を特定し、それらの目的値を取得する方法
- k 個の最も近い近傍の目的値の平均を計算して、テストデータの出力を予測する方法
🏆 成果
このプロジェクトを完了すると、以下のことができるようになります。
- Python を使って KNN 回帰アルゴリズムをゼロから実装する
- KNN アルゴリズムにおいてユークリッド距離を距離尺度として使う
- KNN 回帰アルゴリズムを適用して連続的な目的値を予測する
- 機械学習アルゴリズムの実装における実践的なスキルを示す
KNN 回帰アルゴリズムを実装する
このステップでは、Python を使って K 近傍法(K-Nearest Neighbors:KNN)回帰アルゴリズムを実装する方法を学びます。以下の手順に従ってこのステップを完了しましょう。
- 好きなコードエディタで
knn_regression.pyファイルを開きます。 knn(train_data, train_labels, test_data, k)関数を見つけます。この関数が KNN 回帰アルゴリズムの主な実装になります。train_dataパラメータは既知のサンプルの特徴データで、train_labelsは既知のサンプルの目的値で、test_dataは 1 つの未知のサンプルの特徴データで、kは K 近傍法で使用する最も近い近傍の数を表します。knn()関数の中で、まずtest_dataとすべての学習サンプルの間のユークリッド距離を計算します。ユークリッド距離を計算するにはnumpy.sqrt()とnumpy.sum()関数を使うことができます。
distances = np.sqrt(np.sum((train_data - test_data) ** 2, axis=1))
- 次に、距離をソートして最初の
k個のインデックスを取得することで、k個の最も近い近傍のインデックスを取得します。
nearest_indices = np.argsort(distances)[:k]
nearest_indicesを使ってk個の最も近い近傍のラベルを取得します。
nearest_labels = train_labels[nearest_indices]
k個の最も近い近傍のラベルの平均を計算して、1 つの未知のサンプルtest_dataの予測目的値を取得します。
predicted_label = np.mean(nearest_labels)
round()関数を使って予測ラベルを最大 2 桁まで丸めます。
predicted_label = round(predicted_label, 2)
- 最後に、1 つの未知のサンプル
test_dataの予測目的値を返します。
return predicted_label
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 でさらに多くの実験を行うことができます。



