python机器学习之KNN分类算法

Python机器学习之KNN分类算法

KNN(K-Nearest Neighbors)是一种基本的分类算法,它的基本思想是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。

KNN算法流程

KNN算法的流程如下:

  1. 计算测试样本与训练样本之间的距离;
  2. 选取距离最近的k个训练样本;
  3. 统计k个训练样本中各个类别出现的次数;
  4. 将测试样本归为出现次数最多的类别。

KNN算法实现

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

import numpy as np

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

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

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

上述代码中,定义了一个KNN类,包括k值、训练数据集和训练标签。fit函数接受训练数据集X和训练标签y作为参数,将其保存为类的属性。predict函数接受测试数据集X作为参数,计算测试样本与训练样本之间的距离,选取距离最近的k个训练样本,统计k个训练样本中各个类别出现的次数,将测试样本归为出现次数最多的类别。

示例说明

以下是两个示例,说明如何使用KNN算法进行分类。

示例1

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

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

# 加载数据集
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.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}")

输出结果:

准确率:1.0

示例2

使用KNN算法对手写数字数据集进行分类。

from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from knn import KNN

# 加载数据集
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.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}")

输出结果:

准确率:0.9833333333333333

总结

本文介绍了Python实现KNN分类算法的示例代码,包括KNN算法的流程和实现。KNN算法是一种基本的分类算法,适用于小型数据集和简单的分类问题。在实际应用中,需要根据实际情况选择合适的k值和距离度量方法,以获得更好的性能。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python机器学习之KNN分类算法 - Python技术站

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

相关文章

  • python实现时间序列自相关图(acf)、偏自相关图(pacf)教程

    Python实现时间序列自相关图(acf)、偏自相关图(pacf)教程 在时间序列分析中,自相关和偏自相关图是非常重要的工具。它们可以帮助我们理解时间序列数据的自相关性和建立自回归模型。本教程将介绍如何使用Python来实现时间序列自相关图(acf)和偏自相关图(pacf)。 1. 相关概念 1.1 自相关 自相关用于度量时间序列数据与其滞后版本之间的线性关…

    python 2023年5月18日
    00
  • 解决pycharm启动后总是不停的updating indices…indexing的问题

    这个问题是由于Pycharm在启动时需要对Python包进行扫描索引,如果包数量较多,则需要一些时间来进行索引。但是有些情况下,这个过程可能会出现意外中断,导致Pycharm无法完成索引任务。 以下是解决这个问题的步骤: 1. 检查是否有防火墙或者代理软件导致的网络问题 在索引Python包时,Pycharm需要连接到网站来获取Python包的信息。因此,如…

    python 2023年6月3日
    00
  • Python基于Tkinter开发一个爬取B站直播弹幕的工具

    Python基于Tkinter开发一个爬取B站直播弹幕的工具 本文将详细讲解如何使用Python基于Tkinter开发一个爬取B站直播弹幕的工具。我们将从环境配置开始,一步步地介绍如何使用Python的requests库和BeautifulSoup库爬取B站直播弹幕,并使用Tkinter库实现GUI界面。 环境配置 在使用Python基于Tkinter开发一…

    python 2023年5月15日
    00
  • 使用ImageMagick进行图片缩放、合成与裁剪(js+python)

    使用ImageMagick进行图片缩放、合成与裁剪需要掌握以下几个方面的知识: 安装ImageMagick; 使用命令行操作ImageMagick; 用Python调用ImageMagick命令行。 以下是详细攻略。 1. 安装ImageMagick ImageMagick是一款开源的图片处理工具,它能够对图片进行处理、转换、合成和编辑。我们可以通过以下方式…

    python 2023年5月19日
    00
  • Django 再谈一谈json序列化

    Django 再谈一谈 json 序列化 在 Django 中,json 序列化是常用的一种数据格式转换方式。通过将对象转化为 json 字符串,我们可以在前端以及其他语言的服务(如 Node.js)中使用这些数据。Django 的 json 序列化涉及到一些细节和注意事项,在本文中,我们会进行深入的说明,并提供两个常见的示例说明。 为什么需要 json 序…

    python 2023年6月2日
    00
  • python unicodedata模块用法

    Python unicodedata模块用法 Python的unicodedata模块提供了一些有用的函数,用于处理Unicode字符。本文将介绍unicodedata模块的用法,包括如何获取字符的Unicode名称、分类、数字值等。 获取字符的Unicode名称 使用unicodedata模块的name()函数可以获取字符的Unicode名称。该函数的参数…

    python 2023年5月14日
    00
  • python爬取网站数据保存使用的方法

    在Python中,我们可以使用第三方库如requests和BeautifulSoup来爬取网站数据,并将数据保存到本地文件或数据库中。本文将详细介绍Python爬取网站数据保存使用的方法,并提供两个示例说明。 1. 爬取网站数据 1.1 使用requests库发送HTTP请求 requests库是一个常用的HTTP请求库,可以用于发送HTTP请求并响应数据。…

    python 2023年5月14日
    00
  • windows系统快速安装pytorch的详细图文教程

    下面是详细的攻略: 确定系统和Python版本 安装PyTorch的前提是你已经安装了Python环境。同时你需要知道你的操作系统和Python版本。建议使用Python 3以上的版本。接下来将以Windows 10和Python 3.6为例进行说明。 选择安装PyTorch的方式 在安装PyTorch之前,你需要选择一个安装方式,PyTorch支持多种安装…

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