- 机器学习基础
- ML - 首页
- ML - 简介
- ML - 入门指南
- ML - 基本概念
- ML - 生态系统
- ML - Python 库
- ML - 应用
- ML - 生命周期
- ML - 所需技能
- ML - 实现
- ML - 挑战与常见问题
- ML - 限制
- ML - 真实案例
- ML - 数据结构
- ML - 数学基础
- ML - 人工智能
- ML - 神经网络
- ML - 深度学习
- ML - 获取数据集
- ML - 分类数据
- ML - 数据加载
- ML - 数据理解
- ML - 数据准备
- ML - 模型
- ML - 监督学习
- ML - 无监督学习
- ML - 半监督学习
- ML - 强化学习
- ML - 监督学习 vs. 无监督学习
- 机器学习数据可视化
- ML - 数据可视化
- ML - 直方图
- ML - 密度图
- ML - 箱线图
- ML - 相关矩阵图
- ML - 散点矩阵图
- 机器学习统计学
- ML - 统计学
- ML - 均值、中位数、众数
- ML - 标准差
- ML - 百分位数
- ML - 数据分布
- ML - 偏度和峰度
- ML - 偏差和方差
- ML - 假设
- 机器学习中的回归分析
- ML - 回归分析
- ML - 线性回归
- ML - 简单线性回归
- ML - 多元线性回归
- ML - 多项式回归
- 机器学习中的分类算法
- ML - 分类算法
- ML - 逻辑回归
- ML - K近邻算法 (KNN)
- ML - 朴素贝叶斯算法
- ML - 决策树算法
- ML - 支持向量机
- ML - 随机森林
- ML - 混淆矩阵
- ML - 随机梯度下降
- 机器学习中的聚类算法
- ML - 聚类算法
- ML - 基于质心的聚类
- ML - K均值聚类
- ML - K中心点聚类
- ML - 均值漂移聚类
- ML - 层次聚类
- ML - 基于密度的聚类
- ML - DBSCAN 聚类
- ML - OPTICS 聚类
- ML - HDBSCAN 聚类
- ML - BIRCH 聚类
- ML - 亲和传播
- ML - 基于分布的聚类
- ML - 凝聚层次聚类
- 机器学习中的降维
- ML - 降维
- ML - 特征选择
- ML - 特征提取
- ML - 向后剔除法
- ML - 向前特征构造
- ML - 高相关性过滤器
- ML - 低方差过滤器
- ML - 缺失值比率
- ML - 主成分分析
- 强化学习
- ML - 强化学习算法
- ML - 利用与探索
- ML - Q学习
- ML - REINFORCE 算法
- ML - SARSA 强化学习
- ML - 演员-评论家方法
- 深度强化学习
- ML - 深度强化学习
- 量子机器学习
- ML - 量子机器学习
- ML - 使用 Python 的量子机器学习
- 机器学习杂项
- ML - 性能指标
- ML - 自动化工作流程
- ML - 提升模型性能
- ML - 梯度提升
- ML - 自举汇聚 (Bagging)
- ML - 交叉验证
- ML - AUC-ROC 曲线
- ML - 网格搜索
- ML - 数据缩放
- ML - 训练和测试
- ML - 关联规则
- ML - Apriori 算法
- ML - 高斯判别分析
- ML - 成本函数
- ML - 贝叶斯定理
- ML - 精确率和召回率
- ML - 对抗性
- ML - 堆叠
- ML - 轮次
- ML - 感知器
- ML - 正则化
- ML - 过拟合
- ML - P值
- ML - 熵
- ML - MLOps
- ML - 数据泄露
- ML - 机器学习的盈利模式
- ML - 数据类型
- 机器学习 - 资源
- ML - 快速指南
- ML - 速查表
- ML - 面试问题
- ML - 有用资源
- ML - 讨论
机器学习 - K近邻算法 (KNN)
KNN 是一种监督学习算法,可用于分类和回归问题。KNN 的核心思想是找到给定测试数据点 k 个最近的数据点,并使用这些最近邻来进行预测。k 值是一个需要调整的超参数,它表示要考虑的邻居数量。
对于分类问题,KNN 算法将测试数据点分配给在 k 个最近邻中出现频率最高的类别。换句话说,邻居数量最多的类别就是预测类别。
对于回归问题,KNN 算法将测试数据点分配给 k 个最近邻值的平均值。
用于衡量两个数据点之间相似度的距离度量是影响 KNN 算法性能的重要因素。最常用的距离度量是欧几里德距离、曼哈顿距离和明可夫斯基距离。
KNN 算法的工作原理
KNN 算法可以概括为以下步骤:
加载数据 - 第一步是将数据集加载到内存中。这可以使用 pandas 或 numpy 等各种库来完成。
分割数据 - 下一步是将数据分割成训练集和测试集。训练集用于训练 KNN 算法,而测试集用于评估其性能。
规范化数据 - 在训练 KNN 算法之前,必须规范化数据,以确保每个特征对距离度量计算的贡献相同。
计算距离 - 数据规范化后,KNN 算法计算测试数据点与训练集中每个数据点之间的距离。
选择 k 个最近邻 - KNN 算法根据上一步计算的距离选择 k 个最近邻。
进行预测 - 对于分类问题,KNN 算法将测试数据点分配给在 k 个最近邻中出现频率最高的类别。对于回归问题,KNN 算法将测试数据点分配给 k 个最近邻值的平均值。
评估性能 - 最后,使用准确率、精确率、召回率和 F1 分数等各种指标来评估 KNN 算法的性能。
Python 实现
现在我们已经讨论了 KNN 算法的理论,让我们使用 scikit-learn 在 Python 中实现它。Scikit-learn 是 Python 中一个流行的机器学习库,它提供了用于分类和回归问题的各种算法。
我们将使用 Iris 数据集,这是一个流行的机器学习数据集,其中包含有关三种不同鸢尾花物种的信息。该数据集具有四个特征,包括萼片长度、萼片宽度、花瓣长度和花瓣宽度,以及一个目标变量,即花的种类。
要在 Python 中实现 KNN,我们需要遵循前面提到的步骤。以下是使用 Iris 数据集在 Python 中实现 KNN 的代码:
示例
# import libraries from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.neighbors import KNeighborsClassifier from sklearn.metrics import accuracy_score # load the Iris dataset iris = load_iris() #split the data into training and test sets X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.35, random_state=42) #normalize the data scaler = StandardScaler() X_train = scaler.fit_transform(X_train) X_test = scaler.transform(X_test) #initialize the KNN algorithm knn = KNeighborsClassifier(n_neighbors=5) #train the KNN algorithm knn.fit(X_train, y_train) #make predictions on the test set y_pred = knn.predict(X_test) #evaluate the performance of the KNN algorithm accuracy = accuracy_score(y_test, y_pred) print("Accuracy: {:.2f}%".format(accuracy*100))
输出
执行此代码时,将产生以下输出:
Accuracy: 98.11%