机器学习-K近邻算法-KNN

1 K-紧邻算法简介

1.1 什么是K-近邻算法

直观上理解,就是根据距离的远近来判断你所处于的类别。

但是,也会存在一些问题,距离最近的样本所属于的类别与你需要判断的类别可能不是同一种类别。

1.1 KNN概念

K Nearest Neighbor算法又叫做KNN算法,这个算法是机器学习里面比较经典的算法,总体来说KNN算法是相对比较容易理解的算法。

  • 定义
    如果一个样本再特征空间中的k个最相似(即特征空间中最邻近)的样本大多数属于某一个类别,则该样本也属于这个类别。

  • 距离公式
    两个样本的距离可以通过如下公式计算,又叫欧氏距离,关于距离公式会在后面进行讨论

2 K紧邻算法API

Scikit-learn工具介绍

官方网址

  • Python语言的机器学习工具
  • Scikit-learn包括许多知名的机器学习算法的实现
  • Scikit-learn文档完善,容易上手,丰富的API
  • 目前稳定版本1.4.2

安装

pip install scikit-learn==1.4.2

安装完成后可以通过以下命令查看是否安装成功

import sklearn
  • 安装scikit-learn时需要依赖numpy、scipy等库

API使用

  • sklearn.neighbors.KNeighborsClassifier(n_neighbors=5)

案例

"""
scikit-learn中关于knn的简单案例
"""
from sklearn.neighbors import KNeighborsClassifier

# 获取数据
x = [[1], [2], [3], [4]]
y = [1, 1, 0, 0]

# 机器学习
# 实例化一个训练模型
estimator = KNeighborsClassifier(n_neighbors=2)
# 调用fit方法进行训练
estimator.fit(x, y)

# 预测其它值
ret = estimator.predict([[10]])
print(ret)

3 距离度量

欧氏距离

欧式距离时最容易直观理解的距离度量方法。

曼哈顿距离(Manhattan Distance)

在曼哈顿街区要从一个十字路口开车到另一个十字路口,驾驶距离显然不是两点间的直线距离。这个实际驾驶距离就是“曼哈顿距离”。曼哈顿距离也称为“城市街区距离”(City Block Distance)。

切比雪夫距离

闵可夫斯基距离(Minkowski Distance)

闵氏距离不是一种距离,而是一组距离的定义,是对多个距离度量公式的概括性的表述。

标准化欧氏距离(Standardized EuclideanDistance)

余弦距离(Cosine Distance)

几何中,夹角余弦可用来衡量两个向量方向的差异;机器学习中,借用这一概念来衡量样本向量之间的差异。

posted @ 2024-04-27 21:22  Gazikel  阅读(4)  评论(0编辑  收藏  举报