kNN算法python实现和简单数字识别的方法

下面是详细讲解“kNN算法python实现和简单数字识别的方法”的完整攻略,包括算法原理、Python实现和两个示例说明。

算法原理

kNN算法是一种用的分类算法,其基本思想是通过计算待分类样本与训练集中各个样本的距离,选取距离最近的k个样本,根据这k个样本的类别进行投票,将待分类样本归为票数最多类别。具体步骤如下:

  1. 计算待分类样本与训练集中各个样本的距离;
  2. 选取距离最近的k个样本;
  3. 根据这k个样本的类别进行投票;
  4. 将待分类样本归为票数最多的类别。

Python实现代码

以下Python实现kNN算法的示例代码:

import numpy as np

class KNN:
    def __init__(self, k):
        self.k = k

    def fit(self, X, y):
        self.X = X
        self.y = y

    def predict(self, X):
        y_pred = []
        for x in X:
            distances = np.sqrt(np.sum((self.X - x) ** 2, axis=1))
            indices = np.argsort(distances)[:self.k]
            labels = self.y[indices]
            y_pred.append(np.bincount(labels).argmax())
        return y_pred

上述代码中,定义了一个KNN类表示kNN算法,包括k表示选取的最近邻数,fit方法表示训练模型,predict方法表示预测样本类别。

示例说明

以下是两个示例,说明如何使用KNN类进行操作。

示例1

使用KNN类对鸢尾花数据进行分类。

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

iris = load_iris()
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.2, random_state=42)

knn = KNN(k=3)
knn.fit(X_train, y_train)
y_pred = knn.predict(X_test)

accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy:.2f}")

输出结果:

Accuracy: 1.00

示例2

使用KNN类对手写数据进行分类。

from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
import matplotlib.pyplot as plt

digits = load_digits()
X_train, X_test, y_train, y_test = train_test_split(digits.data, digits.target, test_size=0.2, random_state=42)

knn = KNN(k=3)
nn.fit(X_train, y_train)
y_pred = knn.predict(X_test)

accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy:.2f}")

fig, axes = plt.subplots(nrows=4, ncols=4, figsize=(6, 6))
for i, ax in enumerate(axes.flat):
    ax.imshow(X_test[i].reshape(8, 8), cmap="gray")
    ax.set_title(f"True: {y_test[i]}, Pred: {y_pred[i]}")
    ax.axis("off")
plt.tight_layout()
plt.show()

输出结果:

Accuracy: 0.98

同时,还会显示一个4x4的图像矩阵每个图像显示一个测试样本的图和其真实类别和预测类别。

总结

本文介绍了kNN算法的Python实现方法,包括算法原理、Python实现代码和两个示例说明。kNN算法是一种常用的分类算法,其基本思想是通过计算待分类样本与训练集中各个样本的距离,选取距离最近的k个样本,根据这k个样本的类别进行投票,将待分类样本归为票数最多的类别。在实际应用中,需要注意选取合适的k值,以获得更好的分类效果。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:kNN算法python实现和简单数字识别的方法 - Python技术站

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

相关文章

  • python3 requests库文件上传与下载实现详解

    以下是关于Python3 requests库文件上传与下载实现的攻略: Python3 requests库文件上传与下载实现详解 在Python3中,使用requests库可以方便地实现文件上传和下载。以下是Python3 requests库文件上传与下载实现的攻略。 文件上传 使用requests库上传文件时,需要使用files参数,并将文件打开并读取为二…

    python 2023年5月14日
    00
  • 如何使用Python将一个JSON文件中的数据导入到数据库中?

    以下是如何使用Python将一个JSON文件中的数据导入到数据库中的完整使用攻略。 使用Python将一个JSON文件中的数据导入到数据库中的前提条件 在Python将一个JSON文件中的数据导入到数据库中,需要确保已经安装并启动支持导入数据的数据库,例如MySQL或PostgreSQL,并且需要安装Python的相应数据库驱动程序例如mysql-conne…

    python 2023年5月12日
    00
  • python pandas库读取excel/csv中指定行或列数据

    在这里我将为您详细讲解如何使用Python Pandas库读取Excel或CSV文件中的指定行或列数据的完整实例教程。 1. 准备数据 首先,我们需要准备一份Excel或CSV文件作为数据源。这里我以CSV文件为例,假设我们有一个名为“data.csv”的文件,它的内容如下: Name,Age,Gender,City John,25,Male,New Yor…

    python 2023年5月14日
    00
  • Python读写Redis数据库操作示例

    下面是关于“Python读写Redis数据库操作示例”的完整攻略。 简介 Redis(Remote Dictionary Server)是一个内存数据库,它和内存关系最为密切的是 memcached,但 Redis 的数据类型和功能要更加丰富。Redis 有着极高的读写性能和可靠性,被广泛应用在各种领域中。 Python 作为一门强大的编程语言,能够提供针对…

    python 2023年5月14日
    00
  • python实现超市进销存管理系统

    Python实现超市进销存管理系统攻略 1. 系统设计 超市进销存管理系统主要包含以下几个模块: 商品管理 进货管理 销售管理 库存管理 报表统计 其中,商品管理模块主要负责商品的添加、修改、删除和查询;进货管理模块主要负责进货单的添加、查询以及进货单与商品库存的更新;销售管理模块主要负责销售单的添加、查询以及销售单与商品库存的更新;库存管理模块主要负责商品…

    python 2023年5月30日
    00
  • Python如何处理大数据?3个技巧效率提升攻略(推荐)

    那就让我来详细讲解一下“Python如何处理大数据?3个技巧效率提升攻略(推荐)”的完整攻略,包含以下三个技巧: 技巧一:使用适当的数据结构 在处理大量数据时,数据结构的选择非常重要。Python 中的列表、元组、集合以及字典等都是常见的数据结构,但它们的性能各不相同。在数据量比较大的情况下,应该选择性能更好的数据结构来存储和处理数据,比如使用 Numpy …

    python 2023年5月13日
    00
  • Python request中文乱码问题解决方案

    以下是关于“Python request中文乱码问题解决方案”的完整攻略: Python request中文乱码问题解决方案 在Python中,我们可以使用requests库发送HTTP请求。但是,有时候我们会遇到中文乱码的问题。以下是Python request中文乱码问题解决方案的攻略。 解决方案一:设置编码方式 我们可以在发送请求时设置编码方式,以解决…

    python 2023年5月15日
    00
  • python的简单四则运算语法树可视化

    Python的简单四则运算语法树可视化是一种将Python代码转换为语法树,并将其可视化的技术。它可以帮助我们更好地理解Python代码的结构和执行过程。本文将详细讲解如何使用Python的ast模块和graphviz库实现Python的简单四则运算语法树可视化。 安装graphviz 在使用graphviz之前,我们需要先安装它。可以使用以下命令来安装gr…

    python 2023年5月15日
    00
合作推广
合作推广
分享本页
返回顶部