K 近邻回归算法实现

PythonPythonBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在这个项目中,你将学习如何使用 Python 实现 K 近邻(KNN)回归算法。KNN 是一种广泛使用的机器学习方法,通常用于分类问题。然而,它也可以应用于回归任务,其目标是预测一个连续的目标值。

🎯 任务

在这个项目中,你将学习:

  • 如何理解 KNN 回归算法及其工作原理
  • 如何在 Python 中实现 KNN 回归算法
  • 如何计算测试数据与训练数据之间的欧几里得距离
  • 如何识别 k 个最近邻并检索它们的目标值
  • 如何计算 k 个最近邻的目标值的平均值,以预测测试数据的输出

🏆 成果

完成这个项目后,你将能够:

  • 使用 Python 从头开始实现 KNN 回归算法
  • 在 KNN 算法中使用欧几里得距离作为距离度量
  • 应用 KNN 回归算法预测连续的目标值
  • 展示机器学习算法实现的实践技能

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python(("Python")) -.-> python/ModulesandPackagesGroup(["Modules and Packages"]) python(("Python")) -.-> python/DataScienceandMachineLearningGroup(["Data Science and Machine Learning"]) python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) 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 近邻(KNN)回归算法。按照以下步骤完成此步骤:

  1. 在你喜欢的代码编辑器中打开 knn_regression.py 文件。

  2. 找到 knn(train_data, train_labels, test_data, k) 函数。此函数将是 KNN 回归算法的主要实现。

  3. train_data 参数是已知样本的特征数据,train_labels 是已知样本的目标值,test_data 是单个未知样本的特征数据,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 个最近邻标签的平均值,以获得单个未知样本 test_data 的预测目标值。
predicted_label = np.mean(nearest_labels)
  1. 使用 round() 函数将预测标签最多保留两位小数。
predicted_label = round(predicted_label, 2)
  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.0

恭喜!你已成功实现 KNN 回归算法,并使用提供的示例对其进行了测试。

✨ 查看解决方案并练习

总结

恭喜!你已完成此项目。你可以在 LabEx 中练习更多实验以提升你的技能。