python k-近邻算法实例分享

Python k-近邻算法实例分享

什么是 k-近邻算法

k-近邻算法(k-Nearest Neighbor,简称KNN)是一种基于实例的学习(instance-based learning)或者称为懒惰学习(lazy learning)的非参数化的分类和回归算法。

KNN分类算法的实现过程如下:

  1. 读取训练集数据
  2. 计算待分类实例与训练集中各个实例的相似度或距离
  3. 确定k值,选出与待分类实例距离前k个实例
  4. 统计k个实例的分类数量,并把待分类实例归为数量最多的那类

KNN回归算法在第三步选出的k个实例中计算回归值,可以为这k个实例的值的平均数。

k-近邻算法的优点:简单、易于理解和实现、需要的计算资源较少。

k-近邻算法的缺点:对于高维数据,计算相似度或距离会变得困难;对于特征值较多的数据,需要考虑特征权值问题和降维或特征选择等问题。

k-近邻算法实例1:Iris鸢尾花数据集分类

Iris鸢尾花数据集是机器学习领域中非常常用的一个数据集,包含了150朵三种不同鸢尾花的测量数据。

数据准备

从sklearn提供的datasets模块中读取并划分训练集和测试集

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
iris = load_iris()
data = iris.data
target = iris.target
X_train, X_test, y_train, y_test = train_test_split(data, target, test_size=0.3, random_state=42)

k-近邻算法实现

模型的训练和预测

from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(X_train, y_train)
y_pred = knn.predict(X_test)

模型性能评估

使用混淆矩阵评估模型性能

from sklearn.metrics import confusion_matrix
confusion_matrix(y_test, y_pred)

输出结果

array([[19,  0,  0],
       [ 0, 13,  1],
       [ 0,  1, 11]])

对角线上的值表示正确分类的样本数,非对角线的值表示错误分类的样本数,可以看到该模型在三个类别上均取得了很好的分类效果。

k-近邻算法实例2:手写数字识别

手写数字识别是一个非常常见的图像识别问题,我们可以将数字图片转化为向量来训练k-近邻分类器。

数据准备

从sklearn提供的datasets模块中读取手写数字数据集,并划分训练集和测试集。

from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
digits = load_digits()
data = digits.data
target = digits.target
X_train, X_test, y_train, y_test = train_test_split(data, target, test_size=0.3, random_state=42)

k-近邻算法实现

模型的训练和预测

from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors=5)
knn.fit(X_train, y_train)
y_pred = knn.predict(X_test)

模型性能评估

使用混淆矩阵和分类准确率评估模型的性能

from sklearn.metrics import confusion_matrix, accuracy_score
confusion_matrix(y_test, y_pred)
accuracy_score(y_test, y_pred)

输出结果

array([[54,  0,  0,  0,  0,  0,  0,  0,  0,  0],
       [ 0, 58,  0,  0,  0,  0,  0,  1,  0,  1],
       [ 0,  0, 58,  0,  0,  0,  0,  0,  0,  0],
       [ 0,  0,  1, 52,  0,  0,  0,  0,  3,  0],
       [ 0,  0,  0,  0, 56,  0,  0,  1,  0,  0],
       [ 0,  0,  0,  1,  0, 62,  1,  0,  0,  0],
       [ 0,  0,  0,  0,  0,  0, 65,  0,  0,  0],
       [ 0,  0,  0,  0,  0,  0,  0, 48,  0,  0],
       [ 0,  1,  0,  1,  0,  0,  0,  0, 57,  1],
       [ 0,  0,  0,  1,  0,  1,  0,  0,  1, 62]])
0.9703703703703703

除了通过混淆矩阵的对角线上的值可以看出每个类别的分类效果外,模型的整体分类准确率也可以看出模型在测试集上的分类效果,这里取得了很不错的预测结果。

总结

k-近邻算法是一种简单易用、性能表现良好的分类和回归算法,对于一些简单的数据集,可以快速进行分类和预测。但对于较复杂的数据集,还需结合一些数据预处理和模型优化技术来提高预测效果。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python k-近邻算法实例分享 - Python技术站

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

相关文章

  • python实现学生信息管理系统(面向对象)

    下面我来详细讲解Python实现学生信息管理系统(面向对象)的完整攻略。 1. 理解需求 在开始实现一个项目之前,我们需要对项目的需求有一个明确的了解。比如这个学生信息管理系统,它需要完成以下几个功能: 添加学生信息 删除学生信息 修改学生信息 查询学生信息 显示所有学生信息 2. 数据结构与类设计 针对这些需要实现的功能,我们需要考虑如何设计数据结构以及相…

    python 2023年5月30日
    00
  • 为Python程序添加图形化界面的教程

    添加图形化界面是一个对于Python程序进行增强和提升用户体验的好方法。Python有很多优秀的图形化界面工具包,比如 PyQt、Tkinter、wxPython 等。 本攻略将介绍如何使用 Tkinter 创建基本的 Python 图形化用户界面。以下是详细步骤: 步骤1: 导入必要的库 首先,我们需要导入 Tkinter 库。 import tkinte…

    python 2023年5月30日
    00
  • python爬虫实战之爬取京东商城实例教程

    Python爬虫实战之爬取京东商城实例教程 爬虫框架的选择 在进行爬虫开发之前,我们需要选择一个适合自己的爬虫框架。常见的爬虫框架有Scrapy、BeautifulSoup、Selenium等。对于爬取京东商城这样的电商网站,我建议使用Scrapy框架,因为它可自动化流程,且可以轻松地应用在大型爬虫项目中。 准备工作 在进行爬虫开发之前,我们需要确定要爬取的…

    python 2023年5月14日
    00
  • Python脚本完成post接口测试的实例

    Python脚本完成POST接口测试的实例 在进行接口测试时,我们可以使用Python脚本来完成POST接口测试。本文将介绍如何使用Python脚本完成POST接口测试,并提供两个示例。 步骤一:安装所需库 在进行POST接口测试之前,我们需要安装所需的库。我们可以使用pip命令来安装: pip install requests 步骤二:发送POST请求 我…

    python 2023年5月15日
    00
  • Python的安装步骤是什么?

    Sure,Python的安装步骤如下: 下载Python 首先,进入官网下载Python的最新版本。根据自己的需求选择相应的版本,例如:Windows或macOS等,也可以选择自己需要的具体版本,注意Python3和Python2的区别。 安装Python Windows 下载安装程序,建议下载exe安装程序; 运行安装程序,勾选“Add Python 3.…

    python 2023年4月19日
    00
  • Python实现在Excel中绘制可视化大屏的方法详解

    Python实现在Excel中绘制可视化大屏的方法详解 本教程将介绍使用Python将数据可视化绘制在Excel表格中的方法。 1.准备工作 首先,我们需要导入Python的一些库。这里我们使用pandas处理数据、openpyxl操作Excel、matplotlib进行数据可视化。 import pandas as pd from openpyxl imp…

    python 2023年5月13日
    00
  • Python字典中items()函数案例详解

    下面我将详细讲解一下 “Python字典中items()函数案例详解” 的完整攻略。 标题 介绍 在Python中,字典是一种非常常用的数据结构。字典中的每个元素都由一个键和对应的值组成,可以通过键来访问对应的值。Python中提供了许多方便的函数来操作字典,其中之一就是items()函数。本文将会详细讲解items()函数的用法及示例。 items()函数…

    python 2023年5月13日
    00
  • python实现简单图书管理系统

    下面我会详细讲解实现简单图书管理系统的完整攻略。 1. 确定需求 在开发任何系统之前,我们需要了解系统的需求,这样可以帮助我们更好的设计系统的结构以及制定开发计划。下面是图书管理系统的需求: 有一个书库,可以添加、删除、修改图书信息。 可以按名称、作者、出版社等关键字进行搜索和查询。 可以显示所有图书信息。 2. 设计数据库 接下来我们需要设计系统的数据库结…

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