Python实现KNN(K-近邻)算法的示例代码

下面是详细讲解“Python实现KNN(K-近邻)算法的示例代码”的完整攻略,包括算法原理、Python实现和两个示例。

算法原理

KNN(K近邻)算法是一种基于实例的学习算法,其主要思想是通过计算样本间的距离,找到与目标样本最近的K个样本,然后根据这K个样本的类别,来预测目标样本的类别。

KNN算法的实现过程如下:

  1. 计算目标样本与每个样本之间的距离。
  2. 选取与目标样本距离最近的K个样本。
  3. 根据这K个样本的类别,来预测目标样本的类别。

KNN算法的核心在于如何计算样本之间的距离,常见的距离计算方法包括欧氏距离、曼哈顿距离和余弦距离等。

Python实现

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

import numpy as np
from collections import Counter

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

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

    def predict(self, X):
        y_pred = []
        for x in X:
            distances = []
            for x_train in self.X_train:
                if self.distance == 'euclidean':
                    dist = np.sqrt(np.sum((x - x_train) ** 2))
                elif self.distance == 'manhattan':
                    dist = np.sum(np.abs(x - x_train))
                elif self.distance == 'cosine':
                    dist = np.dot(x, x_train) / (np.linalg.norm(x) * np.linalg.norm(x_train))
                distances.append(dist)
            k_nearest = np.argsort(distances)[:self.k]
            k_nearest_labels = [self.y_train[i] for i in k_nearest]
            most_common = Counter(k_nearest_labels).most_common(1)
            y_pred.append(most_common[0][0])
        return y_pred

上述代码中,使用Python实现了KNN算法。首先定义了一个KNN类,表示KNN算法,包括K值和距离计算方法。在KNN类中,定义了拟合函数fit和预测函数predict。然后使用KNN算法进行分类,返回预测结果。

示例说明

以下两个示例,说明如何使用上述代码进行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, distance='euclidean')
knn.fit(X_train, y_train)
y_pred = knn.predict(X_test)
print(accuracy_score(y_test, y_pred))

运行上述代码,输出结果如下:

1.0

上述代码,使用KNN算法对鸢尾花数据集进行分类。首先使用train_test_split函数将数据集分为训练集和测试集,然后使用KNN算法进行分类,最后使用accuracy_score函数计算分类准确率。运行结果为分类确率。

示例2

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

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

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, distance='euclidean')
knn.fit(X_train, y_train)
y_pred = knn.predict(X_test)
print(accuracy_score(y_test, y_pred))

运行上述代码,输出结果如下:

0.9861111111111112

上述代码中,使用KNN算对手写数字数据集进行分类。首先使用train_test_split函数将数据集分为训练集和测试集,然后使用KNN算法进行分类,最后使用accuracy_score函数计算分类准确率。运行结果为分类准确率。

结语

本文介绍了如何使用Python实现KNN算法,包括算法原理、Python实现和两个示例说明。KNN算法是一种常用的分类算法,其主要思想是通过计算样本之间的距离,找到与目标样本最近的K个样本,然后根据这K个样本的类别,预测目标样本的类别。在实现中,需要注意选择合适的K值和距离计算方法,并根据具体情况进行调整。

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

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

相关文章

  • 关于Python中模块的简介、定义与使用

    Python中模块的简介 在Python中,模块是一种组织Python代码的方式。模块可以包含函数、类、变量等,可以被其他Python程序导入和使用。Python标准库中包含了大量的模块,例如os、sys、re等。此外,Python还支持第三方模块,可以通过pip等工具进行安装和使用。 Python中模块的定义 在Python中,我们可以使用关键字impor…

    python 2023年5月15日
    00
  • Python生成随机数组的方法小结

    Python生成随机数组的方法小结 在Python中,生成随机数组是我们常常需要进行的操作之一。本文将介绍Python生成随机数组的几种方法。 使用random模块生成随机数组 可以使用Python自带的random模块来生成随机数组。以下是一个示例代码: import random lst = [random.randint(1, 100) for _ i…

    python 2023年6月3日
    00
  • Python+Tkinter实现RGB数值转换为16进制码

    首先让我们来介绍一下Python及Tkinter。 Python是一种高级编程语言,它被广泛用于Web开发、数据分析、人工智能等领域。而Tkinter则是Python的标准图形界面(GUI)库之一,它提供了一系列的工具和组件,方便开发者快速构建视觉效果良好的用户界面。 本文主要介绍如何用Python+Tkinter实现RGB数值转换为16进制码的过程。在介绍…

    python 2023年6月13日
    00
  • python文件目录操作之os模块

    下面是关于Python文件目录操作的os模块的详细攻略。 什么是os模块 os模块提供了访问操作系统功能的接口,包括文件操作、目录操作、进程管理、环境变量设置等。 常用的os模块功能如下: os.getcwd():获取当前工作目录。 os.chdir(path):改变当前工作目录。 os.listdir(path):返回指定目录下的所有文件和目录名。 os.…

    python 2023年5月14日
    00
  • 100 个 Python 小例子(练习题四)

    下面是“100 个 Python 小例子(练习题四)”的攻略。 1. 理解题目意思 该练习题中,需要我们完成一系列 Python 练习题。它们基于一些 Python 特性和语法,旨在提高我们的 Python 编程技能。 2. 下载代码 我们可以从 Github 上下载该项目的代码,下载地址为:https://github.com/jackfrued/Pyth…

    python 2023年5月30日
    00
  • 通过自学python能找到工作吗

    当然可以!以下是自学Python并找到工作的完整攻略: 步骤一:学习Python语言基础 Python是一种易于学习的编程语言,它的语法简单,适合初学者入门。你可以选择自学或通过参加课程等方式学习Python语言基础。 学习资源 官方文档:Python官方文档 教程网站:廖雪峰的Python教程 视频课程:Python入门到精通 步骤二:学习Python的W…

    python 2023年6月6日
    00
  • Python操作JSON文件的知识点整理

    Python操作JSON文件的知识点整理 什么是JSON? JSON是一种轻量级的数据交换格式,它以易于阅读和编写的文本格式为基础,可用于在不同编程语言之间交换数据。在Python中,JSON数据可以表示为Python字典。 JSON的语法规则很简单,由键值对组成,用花括号括起来,各个键值对之间用逗号分隔,键和值之间用冒号分隔。 下面是一个简单的JSON对象…

    python 2023年6月2日
    00
  • Python使用jsonpath-rw模块处理Json对象操作示例

    下面是针对“Python使用jsonpath-rw模块处理Json对象操作示例”的完整攻略,包括模块安装、使用说明和示例。 模块安装 在python中,处理Json常常使用 jsonpath-rw 这个模块,安装此模块可以通过pip进行安装。如果你还没有安装这个模块,可以使用如下命令进行安装: pip install jsonpath-rw 进行Json对象…

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