python 实现knn sklearn K近邻分类算法

knn sklearn K近邻分类算法介绍

K近邻(K-Nearest Neighbors,简称KNN)分类算法是sklearn(scikit-learn)库中一种常用的机器学习算法,属于有监督学习范畴。它基于这样一个原理:对于待分类的样本,算法会找到训练数据集中与其最相似的K个样本(即K个最近邻),然后根据这K个样本的类别进行投票,将待分类样本归类到票数最多的类别中。

KNN算法的主要步骤包括:

构建已分类的数据集:作为训练集,其中包含了已知分类标签的样本数据。

计算距离:当输入没有标签的新数据时,算法会计算这个新数据与训练集中每个样本之间的距离。常用的距离度量方法包括欧氏距离和曼哈顿距离。

排序和选择:根据计算出的距离,选择与新数据最相似的K个样本(即K个最近邻)。

分类决策:根据这K个最近邻的类别标签,采用投票法(在分类问题中)或平均法(在回归问题中)来确定新数据的类别或预测值。

KNN算法在sklearn中的实现

在sklearn中,可以使用sklearn.neighbors.KNeighborsClassifier类来实现KNN分类算法。以下是一个简单的使用示例:

python 复制代码
from sklearn.neighbors import KNeighborsClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split

# 加载iris数据集
iris = load_iris()
X = iris.data
y = iris.target

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# 创建KNN分类器实例,设置邻居数为3
knn = KNeighborsClassifier(n_neighbors=3)

# 训练模型
knn.fit(X_train, y_train)

# 预测测试集
predictions = knn.predict(X_test)

# 评估模型(这里可以添加评估代码,如计算准确率等)

KNN算法的特点

简单直观:KNN算法的工作原理简单,容易理解和实现。

分类性能好:由于KNN算法基于实例进行学习,能够充分利用训练数据中的信息,因此在很多数据集上都能取得不错的分类效果。

对数据预处理要求低:KNN算法不需要对数据进行复杂的特征提取或降维操作,只需计算样本之间的距离即可进行分类。

通用性强:KNN算法可以应用于各种类型的数据和场景,包括文本、图像、声音等不同类型的数据,以及分类、回归等不同类型的问题。

然而,KNN算法也存在一些缺点,如计算量大(尤其是当数据集很大时),以及对K值的选择敏感等。因此,在实际应用中,需要根据具体场景和数据特点来选择合适的算法和参数。

knn sklearn K近邻分类算法python实现样例

以下是使用sklearn库实现K近邻分类算法的Python代码示例:

python 复制代码
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score

# 准备训练集和测试集数据
X_train = [[1], [2], [3], [4], [5]]
y_train = [0, 0, 1, 1, 1]
X_test = [[2.5], [4.5], [7]]

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

# 使用训练集训练分类器
knn.fit(X_train, y_train)

# 使用分类器进行预测
y_pred = knn.predict(X_test)

# 打印预测结果
print("预测结果:", y_pred)

# 计算准确率
y_true = [0, 1, 1]
accuracy = accuracy_score(y_true, y_pred)
print("准确率:", accuracy)

在上述代码中,首先从sklearn.neighbors库中导入KNeighborsClassifier类和accuracy_score函数。然后,定义训练集和测试集数据。训练集数据X_train是一个二维列表,每个子列表代表一个样本的特征;训练集数据y_train是一个一维列表,代表每个样本的类别标签。测试集数据X_test是一个二维列表,每个子列表代表一个需要预测的样本的特征。

接着,创建一个K近邻分类器对象knn,并设置参数n_neighbors=3,表示要考虑的最近邻居的数量。

然后,使用训练集数据X_train和y_train来训练分类器knn。

接下来,使用分类器knn对测试集数据X_test进行预测,将预测结果保存在y_pred变量中。

最后,使用accuracy_score函数计算预测结果y_pred和实际标签y_true之间的准确率,并打印准确率。

相关推荐
看我干嘛!2 分钟前
第三次python作业
服务器·数据库·python
deephub3 分钟前
用 PyTorch 实现 LLM-JEPA:不预测 token,预测嵌入
人工智能·pytorch·python·深度学习·大语言模型
我的xiaodoujiao27 分钟前
使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 44--将自动化测试结果自动推送至钉钉工作群聊
前端·python·测试工具·ui·pytest
沈浩(种子思维作者)27 分钟前
铁的居里点(770度就不被磁铁吸了)道理是什么?能不能精确计算出来?
人工智能·python·flask·量子计算
yufuu9829 分钟前
使用Scikit-learn进行机器学习模型评估
jvm·数据库·python
计算机毕业编程指导师41 分钟前
大数据可视化毕设:Hadoop+Spark交通分析系统从零到上线 毕业设计 选题推荐 毕设选题 数据分析 机器学习 数据挖掘
大数据·hadoop·python·计算机·spark·毕业设计·城市交通
计算机毕业编程指导师1 小时前
【计算机毕设选题】基于Spark的车辆排放分析:2026年热门大数据项目 毕业设计 选题推荐 毕设选题 数据分析 机器学习 数据挖掘
大数据·hadoop·python·计算机·spark·毕业设计·车辆排放
浔川python社1 小时前
浔川社团关于产品数据情况的官方通告
python
生活很暖很治愈1 小时前
GUI自动化测试[3]——控件&数鼠标操作
windows·python·功能测试·测试工具
老蒋每日coding1 小时前
Python3基础练习题详解,从入门到熟练的 50 个实例(一)
开发语言·python