Python代码实现KNN算法

Python代码实现KNN算法

KNN(K-Nearest Neighbors)是一种常用的分类算法,它的基本思想是:对于一个未知样本,找与最近的K个已知样本,然后根据这K个样本的类别进行分类。Python中,可以使用scikit-learn库实现KNN分类算法。本文将详细讲解Python实现KNN分类算法的完整攻略,包括算法原理、Python实现过程和示例。

算法原理

KNN算法的基本思想是:对于一个未知样本,找到与其最近的K个已知样本,然后根据这K个样本的类别进行分类。KNN算法的实现过程如下:

  1. 计算未知样本每个已知样本之间的距。
  2. 选取距离最近的K个已知样本。
  3. 根据这K个样本类别进行分类,通常采用数表决法。

Python实现过程

在Python中,可以使用scikit-learn库实现KNN分类算法。以下是使用scikit-learn库实现KNN分类算法的示例代码:

from sklearn.neighbors import KNeighborsClassifier

# 创建KNN分类器
knn = KNeighborsClassifier(n_neighbors=3)

# 训练模型
X_train = [[0, 0], [1, 1], [2, 2], [3, 3]]
y_train = [0, 0, 1, 1]
knn.fit(X_train, y_train)

# 测试新样本
X_test = [[1.5, 1.5], [2.5, 2.5]]
y_pred = knn.predict(X_test)

# 输出预测结果
print(y_pred)

上述代码中,首先导入KNeighborsClassifier。然后,创建KNN分类器,设置K值为3。接着,使用训练数据训练模型。最后,使用测试数据进行预测,并输出预测结果。

示例1:鸢尾花分类

假设有一组鸢尾花数据,包括花萼长度、花萼宽度、花瓣长度和花瓣宽度等特征需要使用KNN算法对其进行分类。可以使用以下代码实现:

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

# 加载数据
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.3, random_state=42)

# 创建KNN分类器
knn = KNeighborsClassifier(n_neighbors=3)

# 训练模型
knn.fit(X_train, y_train)

# 预测新样本
y_pred = knn.predict(X_test)

# 输出预测准确率
print("Accuracy: ", accuracy_score(y_test, y_pred))

执行上述代码后,可以得到以下输出结果:

Accuracy:  0.9777777777777777

示例2:手写数字识别

假设有一组手写数字数据,需要使用KNN算法对其进行分类。可以使用以下代码实现:

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

# 加载数据
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.3, random_state=42)

# 创建KNN分类器
knn = KNeighborsClassifier(n_neighbors=3)

# 训练模型
knn.fit(X_train, y_train)

# 预测新样本
y_pred = knn.predict(X_test)

# 输出预测准确率
print("Accuracy: ", accuracy_score(y_test, y_pred))

执行上述代码后,可以得到以下输出结果:

Accuracy:  0.9888888888888889

总结

本文详讲解了Python实现KNN分类算法的完整攻略,包括算法原理、Python实现过程和示例。KNN算法是一种常用的分类算法,它的基本思想是:对于一个未知样本,到与其最近的K个已样本,然后根据K个样本的类别进行分类。在Python中,可以使用scikit-learn库实现KNN分类算法,具体实现过程如上述所示。通过示例,我们看到KNN算法在实应用中的灵活性和实用。

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

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

相关文章

  • Python将string转换到float的实例方法

    下面是详细讲解“Python将string转换到float的实例方法”的完整攻略。 什么是Python中的字符串和浮点数? 在Python中,字符串指的是用单引号或双引号括起来的字符序列,例如: a_string = ‘hello world’ 而浮点数则是用来表示有小数部分的实数,例如: a_float = 3.14 字符串如何转换成浮点数? 要将一个字符…

    python 2023年6月5日
    00
  • python之pil的使用详解

    Python之PIL的使用详解 Pillow是Python Imaging Library(PIL)的一个开源分支,是一款Python图像处理的强大库,可用于打开、操作和保存各种图像文件格式。本文将详细介绍有关Pillow的使用。 安装 首先需要安装Pillow库,请使用以下命令进行安装: pip install Pillow 打开和显示图像 对于任何图像处…

    python 2023年5月14日
    00
  • 如何解决这个 python 和 django 设置导入特性?

    【问题标题】:How can I resolve this python and django settings import idiosyncrasy?如何解决这个 python 和 django 设置导入特性? 【发布时间】:2023-04-07 15:14:01 【问题描述】: 我有这样的文件布局:settings/—-__init__.py—…

    Python开发 2023年4月8日
    00
  • 教你用Python读取CSV文件的5种方式

    教你用Python读取CSV文件的5种方式 CSV是一种常见的数据格式,如果你需要使用Python对CSV文件进行处理,这篇文章将会教你5种读取CSV文件的方式。 方法1: 使用csv.reader csv.reader是Python内置模块csv中用于读取CSV文件的函数。我们首先需要导入csv模块,然后使用csv.reader打开文件并读取CSV内容。 …

    python 2023年6月3日
    00
  • 详解Python 栈(后进先出)

    让我们来详细讲解Python栈(后进先出)的使用方法。 什么是栈 栈(Stack)又称为堆栈,是一种数据结构,是一个只能在一端进行插入和删除操作的线性表。栈按照先进后出的原则存储数据,先进的数据被压入栈底,最后的数据在栈顶。 Python栈语法 在Python中,可以通过list列表来表示一个栈数据结构。入栈即是使用append()方法,出栈则是使用pop(…

    python-answer 2023年3月25日
    00
  • Python中三元表达式的几种写法介绍

    当我们需要在Python中进行简单的条件判断时,可以使用三元表达式。三元表达式是一种简洁的写法,可以用于替代if-else语句。 什么是Python中的三元表达式 Python中的三元表达式是由一个条件表达式和两个表达式组成的。如果条件为True,则返回值为表达式1,否则返回表达式2的值。 三元表达式的语法如下: expression1 if conditi…

    python 2023年6月3日
    00
  • 利用numpy和pandas处理csv文件中的时间方法

    处理CSV文件中的时间方法,涉及到两个关键库:NumPy和Pandas。在CSV文件中,时间通常表示为字符串数据,我们需要使用Python中的这些库将其转换为机器可读的日期和时间格式。 以下是一个基本的步骤: 步骤 1:导入必要的库 import numpy as np import pandas as pd 步骤 2:读取CSV文件 df = pd.rea…

    python 2023年6月2日
    00
  • Python实现两个list对应元素相减操作示例

    以下是“Python实现两个list对应元素相减操作示例”的完整攻略。 实现方法 在Python中,我们可以使用zip()函数将两个列表对应的元素包成一个元组,然后使用列表推导式对元组的元素进行相减操作。以下是Python实现两个list对应元素相操作的完整攻略。 zip()函数用于将两个对的元素打包成一个元组。它可以接受任意多个可迭代对象为参数,返回一个元…

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