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

下面是详细讲解“Python实现K-近邻算法的示例代码”的完整攻略,包含两个示例说明。

K-近邻法

K-近邻算法是种常用的分类算法,其基本思想将新的数据点与已知数据点进行比较,找到最相似的K个数据点将新的数据点归类为这K个数据中出现最多的类别。K-近邻算法的K值和距离度量方式是法的两重要参数。

Python实现K-近邻算法

要实现K近邻算法,可以使用Python中的NumPy和Scikit-learn库。以下是算法的基本步骤:

  1. 使用NumPy库读取数据,并将其转换为矩阵式。

  2. 使用Scikit-learn库的train_test_split函数将数据集分为训练集和测试集。

  3. 使用Scikit-learn库的KNeighborsClassifier类创建K-近邻分类器,并设置K值和距离度量方式。

  4. 使用K-近邻分类器的fit方法将训练集拟合到模型中。

  5. 使用K-近邻分类器的predict方法对测试集进行预测,并计算测准确率。

以下是一个示例代码,用于K-近邻算法:

import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier

# 读取数据
data = np.loadtxt('data.txt')

# 将数据集分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(data[:, :-1], data[:, -1], test_size=0.2, random_state=42)

# 创建K-近邻分类器
k = KNeighborsClassifier(n_neighbors=3, metric='euclidean')

# 拟合训练集
knn.fit(X_train, y_train)

# 预测测试集
y_pred = knn.predict(X_test)

# 计算准确率
accuracy = np.mean(y == y_test)
print('Accuracy:', accuracy)

这个代码使用NumPy库读取数据,并将其转换为矩阵形式。然后,我们使用Scikit-learn库的train_test_split函数将数据集分为训练集和测试集。下来,我们使用KNeighborsClassifier类创建K-近邻分类器,并设置K值为3和距离度量方式为欧几里得距离。然后,我们使用K-近邻分类器的fit方法将训练集拟合到模型中,并使用predict方法对测试集进行预测最后,我们计算预测准确率。

示例1:使用K-近邻算法分类鸢尾花数据集

让我们使用K-近邻算法分类鸢尾花数据集。我们将以下代码:

import numpy as np
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier

# 加载鸢尾花数据集
iris = load_iris()

# 将数据集分为训练集和测试集
X_train, X_test, y_train, y_test = train_test(iris.data, iris, test_size=0.2, random_state=42)

# 创建K-近邻分类器
knn = KNeighborsClassifier(n_neighbors=3, metric='euclidean')

# 拟合训练集
knn.fit(X_train, y_train)

# 预测测试集
y_pred = knn.predict(X_test)

# 计算准确率
accuracy = np.mean(y_pred == y_test)
print('Accuracy:', accuracy)

这个代码使用Scikit-learn库的load_iris函数加载鸢尾数据集。然后,我们train_test_split函数将数据集分为训练集和测试集。接下来,我们使用KNeighborsClassifier类创建K-近邻分类器,并设置K值为3和距离度量方式为欧几里得距离。然后,我们使用K-近邻分类器fit方法将训练集拟合到模型中,并使用predict方法对测试集进行预测。最后,我们计算预测准确率。

输出结果:

Accuracy: 1.0

这个结果表示,使用K-近邻算法对鸢尾花数据集进行分类的准确率为100%。

示例2:使用K-近邻算分类手写数字数据集

让我们使用K-近邻算法分类手写数字数据集。我们将以下代码:

import numpy as np
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier

# 加载手写数字数据集
digits = load_digits()

# 将数据集分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split.data, digits.target, test_size=0.2, random_state=42)

# 创建K-近邻分类器
knn = KNeighborsClassifier(n_neighbors=3, metric='euclidean')

# 拟合训练集
knn.fit(X_train, y_train)

# 预测测试集
_pred = knn.predict(X_test)

# 计算准确率
 = np.mean(y_pred == y_test)
print('Accuracy:', accuracy)

这个代码使用Scikit-learn库的load_digits函数加载手写数字数据集。然后,我们使用train_test_split函数将数据集分为训练集和测试集。接下来,我们使用KNeighborsClassifier类创建K-近邻分类器,并设置K值为3和距离度量方式为欧几里得距离。然后,我们使用K-近邻分类器的fit方法将训练集拟合模型中,并使用predict方法对测试集进行预测。最后,我们计算预测准确率。

输出结果为:

Accuracy: 0.8888888888889

这个结果表示,使用K-近邻算法对手写数字数据集进行分类的准确率为98.89%。

希这些示例说明帮助你理解如何使用Python实现K-近邻算法。

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

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

相关文章

  • Python实现注册、登录小程序功能

    大致流程如下: 设计数据库结构:包括用户表和会话表,用户表记录用户的账号信息和登录状态,会话表用来维护用户的登录状态; 编写Python后端代码:包括注册、登录、验证、登出等接口实现。具体实现过程请参考下面的示例说明; 编写前端页面:通过HTML、CSS、JavaScript等技术实现一个简单的注册、登录页面。 下面是两个示例: 示例一:实现注册接口 首先设…

    python 2023年5月23日
    00
  • 基于Python+Pyqt5开发一个应用程序

    首先,开发一个基于Python+PyQt5的应用程序,需要完成以下步骤: 步骤1:安装Python和PyQt5 在开始之前,需要确保拥有Python3.x版本和PyQt5库。如果没有,需要下载并安装。 对于Python安装,可以到官网 https://www.python.org/downloads/ 下载安装对应版本的Python。 对于PyQt5库的安装…

    python 2023年5月31日
    00
  • 基于Python实现经典植物大战僵尸游戏

    “基于Python实现经典植物大战僵尸游戏”的完整攻略 简介 植物大战僵尸是一款经典的塔防游戏,该游戏既考验玩家的策略思考,也考验玩家的反应速度。本攻略将会详细介绍如何基于Python实现经典植物大战僵尸游戏,并提供部分示例代码。 游戏规则 植物大战僵尸的游戏规则非常简单:1. 玩家需要布置各类攻击性的植物在游戏场景中,以防止僵尸侵入。2. 当僵尸到达游戏场…

    python 2023年6月2日
    00
  • 对python中list的五种查找方法说明

    Python中列表的五种查找方法 在Python中,可以使用五种方法来查找列表(list)中的元素,包括线性查找、二分查找、in运算符、index()方法和count()方法。下面将详细讲解这五种方法的用法,并提供示例说明。 线性查找 线性查找是一种简单的查找,它从列表的第一个元素开始逐个比较,直到找到目标元素或者遍历完整个列表。如果目标元素不存在于列表中,…

    python 2023年5月13日
    00
  • 使用Tkinter制作信息提示框

    使用 Tkinter 制作信息提示框是一个很简单的操作,只需要调用 Tkinter 模块提供的 messagebox 对象,并选择合适的方法即可。 以下是使用 Tkinter 制作信息提示框的完整攻略: 导入 Tkinter 模块 要使用 Tkinter 制作信息提示框,首先需要导入 Tkinter 模块: import tkinter as tk from…

    python 2023年6月13日
    00
  • Python中logging日志的四个等级和使用

    Python中logging日志的四个等级和使用 在Python中,logging模块是一个非常常用的模块,用于在记录日志的时候输出一些信息,帮助我们进行调试和错误排查。logging模块提供了四个等级,分别是debug、info、warning、error、critical。下面我将详细讲解每个等级以及如何使用。 1. debug debug是最低级别的等…

    python 2023年6月3日
    00
  • Python读写配置文件的方法

    Python读写配置文件的方法可以使用标准库中的configparser模块实现。以下是详细的攻略: 1. 安装configparser模块 首先需要安装configparser模块,可以使用以下pip命令进行安装: pip install configparser 2. 读取配置文件内容 在Python代码中,可以通过以下步骤读取配置文件的内容: 2.1 …

    python 2023年6月5日
    00
  • Python中的变量、运算符与流程控制

    Python中的变量、运算符与流程控制 变量 在Python中,变量的声明无需显式指定数据类型,变量的类型是根据其所存储的值确定的。变量在使用之前需要进行声明,但不必指定类型,通过赋值来进行初始化。 变量名的命名规范为:只包含字母、数字、下划线,不能以数字开头,不能与Python的关键字重名。 示例代码: # 变量的声明和初始化 num = 5 str = …

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