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

yizhihongxing

下面是详细讲解“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日

相关文章

  • Python实现LRU算法的2种方法

    Python实现LRU算法的2种方法 LRU算法是一种常见的缓存淘汰策略,它可以用于实现缓存系统。在本文中,我们将讲解Python实现LRU算法的2种方法,包括使用Python标准库的collections模块和手实现LRU算法。同时,我们还将提供两个示例说明,以帮助读者更好地理解LRU法的使用方法。 方法1:使用collections模块 Python标准…

    python 2023年5月13日
    00
  • 详解Python发送email的三种方式

    下面是“详解Python发送email的三种方式”的完整实例教程。 前言 无论是个人还是企业,发送邮件是经常需要的一个功能,Python提供了多种发送邮件的方式,本文将详细介绍三种方式。 方式一:使用smtplib库发送邮件 代码示例 import smtplib from email.mime.text import MIMEText from email…

    python 2023年5月13日
    00
  • python代码有一行标黄问题的解决方案

    针对“python代码有一行标黄问题”的解决方案,我将按照以下步骤进行说明: 1. 问题描述 在编写Python代码时,如果出现了一行标黄,这通常意味着该行代码存在某种语法错误或问题,导致代码无法正常执行。此时我们需要针对该行代码进行调试和排查。 2. 解决方案 在解决该问题时,我们可以按照以下步骤进行: 步骤1:检查代码错误 首先,我们需要检查该行代码是否…

    python 2023年5月13日
    00
  • Python实现快速计算24点游戏的示例代码

    Python是一种广泛应用于计算机编程的高级编程语言,拥有丰富的开源库和易学易用的语法特性。运用Python可以实现各种有趣的算法和游戏,其中之一就是24点游戏。下面,我们将详细讲解Python实现快速计算24点游戏的示例代码的完整攻略。 环境配置 在开始编写代码之前,需要先确保我们的计算机安装了Python的开发环境和使用的IDE或文本编辑器。在Windo…

    python 2023年6月3日
    00
  • 使用Python实现画一个中国地图

    下面是我撰写的使用Python实现画一个中国地图的完整攻略。 1. 准备工作 在实现之前,需要先准备好以下工具和数据: Python编程语言 Jupyter Notebook或其他Python开发环境 matplotlib、numpy和pandas等常用Python库 中国地图的shapefile文件 其中,shapefile文件是重要的底图数据,可以通过国…

    python 2023年6月6日
    00
  • python实现数字炸弹游戏程序

    下面我会详细讲解“Python实现数字炸弹游戏程序”的攻略。该游戏程序的具体玩法是:根据随机生成的数字,猜测数字的顺序,如数字“1234”被猜测为“4321”则返回“1A3B”,其中A表示数字和位置都正确,B表示数字正确但位置不正确。 搭建基础框架 首先,我们需要确定游戏程序的基础框架。游戏框架可以包括以下几个部分: 随机生成一个4个数字的列表 玩家猜测数字…

    python 2023年5月31日
    00
  • 利用python代码写的12306订票代码

    下面是关于“利用Python代码写的12306订票代码”的完整攻略: 1. 背景介绍 12306是中国铁路客户服务中心开发的一套网络订票系统,也是全国人民购买火车票的主要途径之一。由于12306订票系统访问量大、用户集中,往往会出现抢票难的情况,因此有些程序员开发了一些自动化的代码来辅助用户进行抢票,提高购票成功率。 2. 编写过程 2.1 获取登录验证码 …

    python 2023年6月3日
    00
  • 详解python的变量缓存机制

    请看下面的攻略。 详解Python的变量缓存机制 什么是变量缓存机制? 在Python中,为了节省系统内存的使用,整数、浮点数、布尔值等类型的变量,在一定条件下将被缓存起来,被重复使用,避免重复创建对象导致浪费内存。 Python中的变量缓存机制 整数类型 在Python中,整数类型的对象会被缓存,Python会为整数初始化256个缓存对象,即从-5到256…

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