S19L02-KNN 在 Python 中

html

在Python中构建K-最近邻(KNN)模型:全面指南

KNN Model

欢迎阅读这篇关于在Python中构建K-最近邻(KNN)模型的全面指南。无论您是数据科学爱好者还是经验丰富的专业人士,本文将引导您完成开发KNN分类器的每一个步骤,从数据预处理到模型评估。在本指南结束时,您将对如何使用Python强大的库实现KNN有一个坚实的理解。

目录

  1. K-最近邻(KNN)简介
  2. 理解数据集
  3. 数据预处理
    1. 处理缺失数据
    2. 编码分类变量
    3. 特征选择
    4. 训练集与测试集划分
    5. 特征缩放
  4. 构建KNN模型
  5. 模型评估
  6. 结论
  7. 附加资源

K-最近邻(KNN)简介

K-最近邻(KNN) 是一种简单而有效的监督机器学习算法,适用于分类和回归任务。KNN算法根据其邻居的分类来对数据点进行分类。它直观、易于实现,并且不需要训练阶段,使其在实时预测中高效。

KNN的关键特性:

  • 懒惰学习: KNN不建立内部模型;它记忆训练数据集。
  • 基于实例: 预测基于来自训练数据的实例(邻居)。
  • 非参数化: KNN不对底层数据分布做任何假设。

理解数据集

在本教程中,我们将使用来自Kaggle的WeatherAUS数据集。该数据集包含多个澳大利亚地点多年来记录的天气属性。

数据集概述:

特征 目标变量
Date, Location, MinTemp, MaxTemp, Rainfall, Evaporation, Sunshine, WindGustDir, WindGustSpeed, WindDir9am, WindDir3pm, WindSpeed9am, WindSpeed3pm, Humidity9am, Humidity3pm, Pressure9am, Pressure3pm, Cloud9am, Cloud3pm, Temp9am, Temp3pm, RainToday, RISK_MM RainTomorrow(是/否)

数据预处理

数据预处理是机器学习中的关键步骤。它涉及将原始数据转换为可理解的格式。适当的预处理可以显著提升机器学习算法的性能。

处理缺失数据

缺失数据会对机器学习模型的性能产生不利影响。我们将处理数值和分类特征的缺失值。

数值数据

  1. 识别数值列:
  2. 用均值填补缺失值:

分类数据

  1. 识别分类列:
  2. 用众数(最频繁值)填补缺失值:

编码分类变量

机器学习算法需要数值输入。因此,我们需要将分类变量转换为数值格式。

标签编码

标签编码根据字母顺序为每个类别分配一个唯一的整数。

独热编码

独热编码为每个类别创建二进制列。

编码选择函数

此函数根据唯一类别的数量决定是应用标签编码还是独热编码。

应用编码:

特征选择

选择相关特征可以提升模型性能。

  1. 应用SelectKBest和卡方检验:
  2. 结果形状:

训练集与测试集划分

将数据集划分为训练集和测试集,确保模型在未见过的数据上进行评估。

特征缩放

特征缩放标准化独立变量的范围,确保每个特征对结果的贡献相同。

  1. 标准化:
  2. 检查形状:

构建KNN模型

数据预处理完成后,我们现在可以构建KNN分类器。

  1. 导入KNeighborsClassifier:
  2. 初始化分类器:
  3. 训练模型:
  4. 进行预测:
  5. 单个预测示例:
  6. 预测概率:

模型评估

评估模型的性能对于了解其准确性和可靠性至关重要。

  1. 导入准确率评分:
  2. 计算准确率:

解释:

  • KNN模型达到了90.28%的准确率,表明它在超过90%的情况下正确预测了第二天的降雨状态。这一高准确率表明该模型非常适合此分类任务。

结论

在本指南中,我们完成了在Python中构建K-最近邻(KNN)模型的整个过程:

  1. 数据导入: 使用WeatherAUS数据集。
  2. 数据预处理: 处理缺失值、编码分类变量和选择相关特征。
  3. 训练集与测试集划分及特征缩放: 为训练做准备,并确保特征的统一性。
  4. 模型构建: 训练KNN分类器并进行预测。
  5. 模型评估: 评估模型的准确率。

KNN算法证明是分类任务中的一个强大选择,尤其是在数据经过良好预处理的情况下。然而,必须尝试不同的超参数(如邻居数)和交叉验证技术,以进一步提升模型性能。


附加资源


模型构建愉快! 🚀


免责声明:本文基于视频教程的转录,并辅以Jupyter Notebook和Python脚本中的代码示例。请根据您的具体数据集和需求调整和修改代码。

分享你的喜爱