K-近邻算法

1.介绍

K-近邻算法(K Nearest Neighbor)又叫KNN算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一,用于分类和回归问题。

该方法的思路是:在特征空间中,如果一个样本附近的k个最近(即特征空间中最邻近)样本的大多数属于某一个类别,则该样本也属于这个类别。用官方的话来说,所谓K近邻算法,即是给定一个训练数据集,对新的输入实例,在训练s数据集中找到与该实例最邻近的K个实例(也就是上面所说的K个邻居), 这K个实例的多数属于某个类,就把该输入实例分类到这个类中。

三个基本要素:k值的选择、距离度量和分类决策规则。

2.优缺点

k近邻算法的优点是简单且易于实现,适用于多类别分类和非线性回归问题。

它的缺点是计算复杂度高,对于大规模数据集效率较低。

此外,k值的选择也会影响算法的性能,选择较小的k值容易受到噪声的影响,而选择较大的k值容易忽略样本之间的细节差异。

3.流程

(1)准备数据集:收集具有已知分类的训练样本数据。

(2)选择k值:确定k值,即选择离目标样本最近的k个邻居。

(3)计算距离:计算目标样本与训练样本之间的距离。常用的距离度量方法有欧氏距离、曼哈顿距离等。

(4)找到k个最近邻居:根据距离计算结果,找到离目标样本最近的k个邻居。

(5)进行投票:根据k个最近邻居的标签,通过投票或取多数类别的方式来进行分类。

(6)预测分类结果:将投票结果作为目标样本的分类结果。

以下是一个Python代码示例,演示了如何使用k近邻算法实现分类:

import numpy as np
from sklearn.neighbors import KNeighborsClassifier

# 准备数据
X_train = np.array([[1, 2], [3, 4], [5, 6], [7, 8]])
y_train = np.array([0, 0, 1, 1])
X_test = np.array([[2, 3], [6, 7]])

# 创建k近邻分类器
knn = KNeighborsClassifier(n_neighbors=3)

# 拟合模型
knn.fit(X_train, y_train)

# 进行预测
y_pred = knn.predict(X_test)

print("预测结果:", y_pred)

以上代码中,首先准备了训练数据X_train和对应的标签y_train,以及待预测数据X_test。然后创建了一个k近邻分类器,并使用fit方法拟合模型。最后调用predict方法对X_test进行预测,得到预测结果y_pred。

4.例子

如果K=3,绿色圆点的最近的3个邻居是2个红色小三角形和1个蓝色小正方形,少数从属于多数,基于统计的方法,判定绿色的这个待分类点属于红色的三角形一类。

如果K=5,绿色圆点的最近的5个邻居是2个红色三角形和3个蓝色的正方形,还是少数从属于多数,基于统计的方法,判定绿色的这个待分类点属于蓝色的正方形一类。

于此我们看到,当无法判定当前待分类点是从属于已知分类中的哪一类时,我们可以依据统计学的理论看它所处的位置特征,衡量它周围邻居的权重,而把它归为(或分配)到权重更大的那一类。这就是K近邻算法的核心思想。

5.注意事项

 (1)数据预处理:确保数据集中的特征值具有相似的尺度,例如通过标准化或归一化处理。

 (2)k值的选择:选择合适的k值非常重要,一个较小的k值可能会导致过拟合,而一个较大的k值可能会导致欠拟合。可以通过交叉验证或网格搜索等方法来选择最优的k值。

 (3)特征选择:选择对分类有影响的特征,避免使用无关或冗余的特征。

 (4)处理样本不平衡:如果数据集中的类别分布不均衡,可以采用欠采样、过采样或集成学习等方法来处理。

 (5)存储训练集:k近邻算法需要将训练集存储在内存中,因此当训练集很大时,可能会导致内存消耗较大。

 (6)处理离群点:k近邻算法对离群点敏感,这可能导致错误的分类结果。可以通过移除离群点、使用异常检测方法或调整距离权重等方法来处理离群点。 

 (7)计算效率:k近邻算法需要计算样本之间的距离,对于大规模数据集,可能需要考虑使用近似算法或降低维度等方法来提高计算效率。

 (8)交叉验证:为了评估模型的性能,可以使用交叉验证来验证模型。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值