Python 机器学习 K-近邻算法 常用距离度量方法

本文详细介绍了K-近邻(KNN)算法中不同距离度量方法,如欧几里得距离、曼哈顿距离、切比雪夫距离、闵可夫斯基距离和汉明距离,以及在Python中如何实现这些度量。重点展示了如何在scikit-learn中使用这些度量选择最合适的模型性能。
摘要由CSDN通过智能技术生成

K-近邻(K-Nearest Neighbors,KNN)算法中,选择合适的距离度量是非常重要的,因为它决定了如何计算数据点之间的“相似性”。不同的距离度量可能会导致不同的KNN模型性能。选择哪种距离度量取决于数据的类型和问题的性质。可以通过交叉验证来比较不同距离度量对模型性能的影响,以选择最合适的一种。

1、欧几里得距离(Euclidean Distance)

距离的度量最常用的距离度量方法,适用于连续型数据。它是在多维空间中两点间的“直线”距离。它表示两个点在n维空间中的实际距离。

Python中,可以使用多种方法来计算两个点之间的欧几里得距离。代码如下,

1)使用math模块

import math

def euclidean_distance(point1, point2):
    return math.sqrt(sum((p1 - p2) ** 2 for p1, p2 in zip(point1, point2)))

# 测试
point1 = (1, 2, 3)
point2 = (4, 5, 6)
print(euclidean_distance(point1, point2))

2)使用NumPy

import numpy as np

def euclidean_distance_np(point1, point2):
    return np.sqrt(np.sum((np.array(point1) - np.array(point2)) ** 2))

# 测试
point1 = (1, 2, 3)
point2 = (4, 5, 6)
print(euclidean_distance_np(point1, point2))

2、曼哈顿距离(Manhattan Distance)

KNN算法的关键之一是距离度量,它决定了如何计算特征空间中两点之间的距离。曼哈顿距离(Manhattan Distance)是KNN中常用的距离度量之一。曼哈顿距离,也称为城市街区距离,是通过计算两个点在标准坐标系上的绝对轴距总和来衡量的。

1)使用math模块

import math

def manhattan_distance(point1, point2):
    return sum(abs(p1 - p2) for p1, p2 in zip(point1, point2))

# 示例点
point1 = (1, 2, 3)
point2 = (4, 5, 6)

# 计算曼哈顿距离
dis
  • 7
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值