Python机器学习分类算法(五)-- 最近邻算法(k-Nearest Neighbors,KNN)

最近邻算法原理

k-最近邻(k-Nearest Neighbors,KNN)算法是一种基本的机器学习分类和回归算法。在分类问题中,KNN通过测量不同特征值之间的距离来进行分类。它的工作原理是:存在一个样本数据集合,也称作训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一数据与所属分类的对应关系。输入没有标签的新数据后,将新数据的每个特征与样本集中数据对应的特征进行比较,然后算法提取样本集中特征最相似数据(最近邻)的分类标签。一般来说,我们只选择样本数据集中前k个最相似的数据,这就是k-近邻算法中k的出处,通常k是不大于20的整数。最后,选择k个最相似数据中出现次数最多的分类,作为新数据的分类。

使用场景

KNN算法可以用于多种分类问题,包括但不限于文本分类、图像识别、推荐系统等。当数据标签噪音较大时,KNN算法较为健壮,因为它只依赖于最近的k个邻居的类别。此外,由于KNN算法易于理解和实现,它通常被用作机器学习入门的第一个算法。

优缺点

优点:

  1. 原理简单,易于理解和实现。
  2. 基于实例的学习,无需建立模型,无需参数估计。
  3. 对异常值不敏感。

缺点:

  1. 计算量大,特别是当训练集很大时。
  2. 需要存储所有训练数据,以便进行预测。
  3. 对数据的预处理要求较高,如特征的缩放和标准化。
  4. k值的选择对结果影响很大,通常需要交叉验证来选择合适的k值。

示例代码(使用Python的scikit-learn库)

这里以鸢尾花数据集为例,直接使用Python的scikit-learn库,简单的代码如下,如果要使用此方法,可以自行调整参数:

python 复制代码
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 classification_report, confusion_matrix  
  
# 加载鸢尾花数据集  
iris = load_iris()  
X = iris.data  
y = iris.target  
  
# 数据预处理:标准化特征  
scaler = StandardScaler()  
X = scaler.fit_transform(X)  
  
# 划分训练集和测试集  
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)  
  
# 创建KNN分类器,设置k=3  
knn = KNeighborsClassifier(n_neighbors=3)  
  
# 训练模型  
knn.fit(X_train, y_train)  
  
# 预测测试集  
y_pred = knn.predict(X_test)  
  
# 打印分类报告和混淆矩阵  
print(classification_report(y_test, y_pred))  
print(confusion_matrix(y_test, y_pred))

在这个示例中,我们使用了鸢尾花数据集,并对其进行了特征标准化,划分了训练集和测试集,并创建了一个KNN分类器(设置k=3),训练了模型,对测试集进行了预测,并打印了分类报告和混淆矩阵来评估模型的性能。

相关推荐
全栈练习生几秒前
RAG 准确率保障的体系化方案
python·ai
秋秋小事9 分钟前
python 基础知识总结(一)
python
蜗牛互联网20 分钟前
Python调用Gemini Structured Outputs实现工单路由门禁
java·开发语言·人工智能·python
Zzj_tju22 分钟前
蒸馏推理过程,传递的是能力还是表达习惯?
人工智能·机器学习·自然语言处理
TomEval35 分钟前
【测AI】第12篇:NLP / CV / 语音 —— 三大 AI 方向速通
人工智能·python·自然语言处理·aigc·测试用例
SEO_juper36 分钟前
给网页做可引用性评分:判断内容够不够让 AI 引用(GEO 工具,附代码)
开发语言·人工智能·爬虫·python·seo·独立站
AI直播技术杂谈39 分钟前
无人直播中控的硬件底线,旧电脑要满足哪些条件
网络·python·ai·云计算
Helix25043 分钟前
Python数据分析实战:Pandas清洗豆瓣短评与情感分析完整指南
python·pandas·数据清洗·情感分析··snownlp·文本数据处理
larance1 小时前
DNN二分类示例
人工智能·分类·dnn
MerryLuna1 小时前
专业的EUDR机构
大数据·人工智能·python