Python代码实现KNN算法

Python代码实现KNN算法

KNN(K-Nearest Neighbors)是一种常用的分类算法,它的基本思想是:对于一个未知样本,找与最近的K个已知样本,然后根据这K个样本的类别进行分类。Python中,可以使用scikit-learn库实现KNN分类算法。本文将详细讲解Python实现KNN分类算法的完整攻略,包括算法原理、Python实现过程和示例。

算法原理

KNN算法的基本思想是:对于一个未知样本,找到与其最近的K个已知样本,然后根据这K个样本的类别进行分类。KNN算法的实现过程如下:

  1. 计算未知样本每个已知样本之间的距。
  2. 选取距离最近的K个已知样本。
  3. 根据这K个样本类别进行分类,通常采用数表决法。

Python实现过程

在Python中,可以使用scikit-learn库实现KNN分类算法。以下是使用scikit-learn库实现KNN分类算法的示例代码:

from sklearn.neighbors import KNeighborsClassifier

# 创建KNN分类器
knn = KNeighborsClassifier(n_neighbors=3)

# 训练模型
X_train = [[0, 0], [1, 1], [2, 2], [3, 3]]
y_train = [0, 0, 1, 1]
knn.fit(X_train, y_train)

# 测试新样本
X_test = [[1.5, 1.5], [2.5, 2.5]]
y_pred = knn.predict(X_test)

# 输出预测结果
print(y_pred)

上述代码中,首先导入KNeighborsClassifier。然后,创建KNN分类器,设置K值为3。接着,使用训练数据训练模型。最后,使用测试数据进行预测,并输出预测结果。

示例1:鸢尾花分类

假设有一组鸢尾花数据,包括花萼长度、花萼宽度、花瓣长度和花瓣宽度等特征需要使用KNN算法对其进行分类。可以使用以下代码实现:

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.neighbors import KNeighborsClassifier

# 加载数据
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分类器
knn = KNeighborsClassifier(n_neighbors=3)

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

# 预测新样本
y_pred = knn.predict(X_test)

# 输出预测准确率
print("Accuracy: ", accuracy_score(y_test, y_pred))

执行上述代码后,可以得到以下输出结果:

Accuracy:  0.9777777777777777

示例2:手写数字识别

假设有一组手写数字数据,需要使用KNN算法对其进行分类。可以使用以下代码实现:

from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.neighbors import KNeighborsClassifier

# 加载数据
digits = load_digits()
X = digits.data
y = digits.target

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

# 创建KNN分类器
knn = KNeighborsClassifier(n_neighbors=3)

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

# 预测新样本
y_pred = knn.predict(X_test)

# 输出预测准确率
print("Accuracy: ", accuracy_score(y_test, y_pred))

执行上述代码后,可以得到以下输出结果:

Accuracy:  0.9888888888888889

总结

本文详讲解了Python实现KNN分类算法的完整攻略,包括算法原理、Python实现过程和示例。KNN算法是一种常用的分类算法,它的基本思想是:对于一个未知样本,到与其最近的K个已样本,然后根据K个样本的类别进行分类。在Python中,可以使用scikit-learn库实现KNN分类算法,具体实现过程如上述所示。通过示例,我们看到KNN算法在实应用中的灵活性和实用。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python代码实现KNN算法 - Python技术站

(0)
上一篇 2023年5月13日
下一篇 2023年5月13日

相关文章

  • 解决python2.7用pip安装包时出现错误的问题

    针对 Python2.7 用 pip 安装包出现错误的问题,我这里提供以下完整攻略,希望能对您有所帮助。 问题描述 Python2.7 中使用 pip 安装包时出现的错误可以有很多种,其中常见的包括但不限于以下几种情况: pip install 命令执行时报错,提示 pip 版本过低。 安装包的时候在编译源码的过程中报错。 安装包时提示缺少某些库、依赖环境等…

    python 2023年5月14日
    00
  • Python 实现敏感目录扫描的示例代码

    Python 实现敏感目录扫描的示例代码 在进行网络安全测试时,敏感目录扫描是一项重要的任务。使用 Python 可以实现自动化敏感目录扫描的过程。以下是 Python 实现敏感目录扫描的示例代码的详细介绍。 1. 使用 requests 模块进行敏感目录扫描 requests 是一个流行的 Python HTTP 库,可以用来发送 HTTP 请求。可以使用…

    python 2023年5月15日
    00
  • python常见的占位符总结及用法

    在Python中,占位符是一种特殊的字符,用于在字符串中插入变量或值。在本攻略中,我们将介绍Python中常见的占位符及其用法。 以下是完整攻略包括两个示例。 常见的占位符 在Python中,常见的占位符包括: %s:字符串占位符,用于插入字符串变量或值。 %d:整数占位符,用于插入整数变量或值。 %f:浮点数占位符,用于插入浮点数变量或值。 %x:十六进制…

    python 2023年5月15日
    00
  • Python创建日历实例

    Python中创建日历实例的过程非常简单。Python内置的 calendar 模块提供了许多函数,可用于操作日历。以下是完整攻略。 导入模块 Python内置的 calendar 模块包含了日历操作的各种函数和类。因此,我们需要导入该模块。 import calendar 打印指定年份的日历 我们可以使用模块中的 calendar.calendar(yea…

    python 2023年5月20日
    00
  • Python中低维数组填充高维数组的实现

    Python中低维数组填充高维数组的实现可以通过NumPy库中的reshape函数或者newaxis关键字来实现。具体步骤如下: 确定高维数组的维度和形状。 创建低维数组并填充数据。 使用reshape函数将低维数组转换为高维数组。 或者在低维数组中使用newaxis关键字来添加新的维度。 下面是两个示例说明: 示例1:使用reshape函数填充高维数组 i…

    python 2023年6月6日
    00
  • python pygame实现打砖块游戏

    让我们来详细讲解一下“Python Pygame实现打砖块游戏”的完整攻略。 准备工作 安装Python和Pygame模块。需要Python 3.x版本和相应的Pygame模块,可以通过在终端中输入”pip install pygame”安装Pygame模块。 下载打砖块素材,包括游戏背景、砖块、挡板、球等。 游戏实现 导入必要的模块。在程序代码的头部,导入…

    python 2023年6月3日
    00
  • python如何实现复制目录到指定目录

    下面是 Python 如何实现复制目录到指定目录的完整攻略。 1. 使用 shutil 模块中的 copytree 函数进行复制 shutil 是 Python 标准库中的一个文件操作库,其中提供了 copytree 函数,可以用于将一个目录的全部文件复制到指定的目录。 以下是一个示例代码: import shutil # 定义源目录和目标目录 src_di…

    python 2023年6月5日
    00
  • mosn基于延迟负载均衡算法 — 走得更快,期待走得更稳

    前言 这篇文章主要是介绍mosn在v1.5.0中新引入的基于延迟的负载均衡算法。 对分布式系统中延迟出现的原因进行剖析 介绍mosn都通过哪些方法来降低延迟 构建来与生产环境性能分布相近的测试用例来对算法进行验证 地址:https://github.com/mosn/mosn/pull/2253 在开始聊基于延迟的负载均衡算法之前,先介绍下什么是负载均衡——…

    算法与数据结构 2023年5月8日
    00
合作推广
合作推广
分享本页
返回顶部