K最近邻算法

目录

 

1  使用make_blobs生成的数据集


使用make_blobs生成的数据集

  • X[:,0]指的是  二维数组中的第一列  
  • 而X[1:5]指的是一维数组从索引1至索引4(即 左含右不含

  • X[:5]是  从索引0至索引4
#导入数据集生成器
from sklearn.datasets import make_blobs
#导入KNN分类器
from sklearn.neighbors import KNeighborsClassifier
#导入画图工具
import matplotlib.pyplot as plt
#导入数据集拆分工具
from sklearn.model_selection import train_test_split
#生成样本数为200,分类为2的数据集
data = make_blobs(n_samples=200,centers=2,random_state=8)
X,y = data
#X[:,0]指的是  二维数组中的第一列   而X[1:5]指的是一维数组从索引1至索引4(即 左含右不含)
plt.scatter(X[:,0],X[:,1],c=y,cmap=plt.cm.spring,edgecolor='k')   
plt.show()

### K最近邻算法 (K-Nearest Neighbor Algorithm) K最近邻算法(KNN)是一种基于实例的学习方法,属于懒惰学习(lazy learning),其核心思想是在分类过程中仅对局部函数进行近似估计,并将所有计算延迟至分类阶段完成[^1]。作为一种非常基础的机器学习算法,KNN以其简洁性和高效性著称。 #### 基本原理 KNN的工作机制依赖于数据点之间的相似度测量。对于一个新的输入样本,该算法会根据选定的距离度量方式,在训练集中找到与其最接近的 \(k\) 个邻居。随后,依据这些邻居所属类别的情况来决定新样本的分类标签。通常采用多数投票原则来进行最终决策[^3]。 #### 特点分析 ##### 优势 - **高精度**:由于直接利用已知的数据点进行推断,因此能够达到较高的预测准确率。 - **鲁棒性强**:对噪声和异常值具有较强的容忍能力,不会轻易受到个别极端值的影响。 - **无需显式训练**:与其他复杂的建模技术不同的是,KNN并不涉及参数调整或模型拟合的过程[^2]。 ##### 劣势 - **计算开销大**:当面对大规模数据集时,寻找最近邻所需的时间成本显著上升,因为每次都需要重新评估目标点与整个训练集合间的关系。 - **存储需求高**:为了支持实时查询操作,必须保存全部历史记录,这无疑增加了内存占用的压力。 - **维度灾难问题**:随着特征数量增多,欧氏距离等传统衡量标准的有效性可能会下降,从而影响整体性能表现[^4]。 #### 实现细节 以下是使用Python实现的一个基本版本KNN: ```python from collections import Counter import numpy as np def knn_predict(X_train, y_train, X_new, k=3): distances = [] # 计算每一个训练样例到新样例的距离 for i in range(len(X_train)): distance = euclidean_distance(X_train[i], X_new) distances.append((distance, y_train[i])) # 对距离列表按照第一个元素升序排列并取前k项 sorted_distances = sorted(distances)[:k] labels = [label for _, label in sorted_distances] prediction = Counter(labels).most_common(1)[0][0] return prediction def euclidean_distance(x1, x2): return np.sqrt(np.sum((x1-x2)**2)) ``` 此代码片段定义了一个简单的`knn_predict`函数用于执行分类任务以及辅助性的欧式距离计算器`euclidean_distance`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值