Python机器学习k-近邻算法(K Nearest Neighbor)实例详解

下面是详细讲解“Python机器学习k-近邻算法(KNearestNeighbor)实例详解”的完整攻略,包括算法原理、Python实现和两个示例说明。

算法原理

k-近邻算法是一种基于实例的学习方法,其主要思想是通过计算样本之间的距离,找到与目标样本最近的k个样本,然后根据这k个样本的类进行分类。k-近邻算法的实现过程如下:

  1. 计算目标样本与训练样本之间的距离。
  2. 找到与目标样本最近的k个样本。
  3. 根据这k个样本的类别进行分类。

Python实现

以下是Python实现k-近邻算法的示例代码:

import numpy as np
from sklearn.neighbors import KNeighborsClassifier

# 训练数据
X_train = np.array([[1,2],[2,3],[3,1],[4,2],[3,3],[2,1]])
y_train = np.array([0,0,0,1,1,1])

# 创建k-近邻分类器
knn = KNeighborsClassifier(n_neighbors=3)

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

# 预测新数据
X_test = np.array([[2,2],[3,2],[2,3],[4,3]])
y_pred = knn.predict(X_test)

print(y_pred)

上述代码中使用scikit-learn库实现了k-近邻算法。首先定义训练数据X_train和y_train,其中X_train是一个二维数组,每一行表示一个样本,y_train是一维数组,表示每个样本的类别。接着创建KNeighborsClassifier对象,设置k值为3。然后使用fit函数训练模型。最后使用predict函数预测新数据X_test的类别,并输出预测结果。

示例说明

以下两个示例,说明如何使用上述代码进行分类。

示例1

使用k-近邻算法对样本进行分类。

import numpy as np
from sklearn.neighbors import KNeighborsClassifier

# 训练数据
X_train = np.array([[1,2],[2,3],[3,1],[4,2],[3,3],[2,1]])
y_train = np.array([0,0,0,1,1,1])

# 创建k-近邻分类器
knn = KNeighborsClassifier(n_neighbors=3)

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

# 预测新数据
X_test = np.array([[2,2],[3,2],[2,3],[4,3]])
y_pred = knn.predict(X_test)

print(y_pred)

运行上述代码,输出结果为预测的类别。

上述代码中,使用k-近邻算法对样本进行分类。首先定义训练数据X_train和y_train,其中X_train是一个二维数组,每一行表示一个样本,y_train是一个一维数组,表示每个样本的类别。接着创建KNeighborsClassifier对象,设置k值为3。然后使用fit函数训练模型。最后使用predict函数预测新数据X_test的类别,并输出预测结果。

示例2

使用k-近邻算法对鸢尾花数据集进行分类。

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

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

# 创建k-近邻分类器
knn = KNeighborsClassifier(n_neighbors=3)

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

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

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

运行上述代码,输出结果为分类的准确率。

上述代码中,使用k-近邻算法对鸢尾花数据集进行分类。首先使用load_iris函数加载数据集,然后使用train_test_split函数划分训练集和测试集。接着创建KNeighborsClassifier对象,设置k值为3。然后使用fit函数训练模型。最后使用predict函数预测测试集的类别,并计算准确率。

结语

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

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python机器学习k-近邻算法(K Nearest Neighbor)实例详解 - Python技术站

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

相关文章

  • Python OpenCV基于霍夫圈变换算法检测图像中的圆形

    Python OpenCV基于霍夫圈变换算法检测图像中的圆形 基本介绍 霍夫圆变换是利用数学原理检测图像中的圆形的一种方法。它需要对每个像素点进行检测,计算出其是否可以代表一个圆。这种方法在处理较小的圆或噪声较小的图像时非常有效。 算法步骤 霍夫圆变换算法的具体步骤如下: 边缘检测:使用Canny算法或其他方法根据图像进行边缘检测。 霍夫变换:对于边缘图像中…

    python 2023年5月18日
    00
  • 基于Python的学生信息管理系统

    注意,该项目为Python基础语法的一个综合,项目数据库。 #学员管理系统 “”” 学员管理系统 1. 系统简介 需求:进入系统显示系统功能界面,功能如下: 1、添加学员 2、删除学员 3、修改学员信息 4、查询学员信息 5、显示所有学员信息 6、退出系统 系统共6个功能,用户根据自己需求选取。 “”” #定义学生信息为列表类型的全局变量 info = []…

    python 2023年4月17日
    00
  • Python爬虫 12306抢票开源代码过程详解

    本攻略将提供一个Python爬虫12306抢票开源代码的详解,包括代码的基本原理、代码的实现过程、代码的使用方法以及两个示例,分别演示如何使用Python爬虫12306抢票。 代码的基本原理 Python爬虫12306抢票的基本原理是通过模拟用户登录12306网站,查询车票信息,提交订单等操作,实现自动抢票的功能。具体实现过程如下: 使用requests模块…

    python 2023年5月15日
    00
  • python导入火炬错误

    【问题标题】:python import torch errpython导入火炬错误 【发布时间】:2023-04-01 11:35:02 【问题描述】: python import torch err,通过pip安装的torch版本是1.7.0+cu110,我在这个问题上浪费了一天时间,有谁知道怎么解决,谢谢 C:\Users\xujimu\Desktop…

    Python开发 2023年4月8日
    00
  • python根据出生日期返回年龄的方法

    下面是关于“python根据出生日期返回年龄的方法”的完整攻略。首先需要明确一个概念,就是将当前日期减去出生日期,并按年份计算其差值,即为年龄。 1. 获取当前日期与出生日期 使用Python自带的datetime模块可以轻松获取当前日期,例如: from datetime import date today = date.today() 要获取出生日期,可…

    python 2023年6月2日
    00
  • 解决Python复杂zip文件的解压问题

    下面是“解决Python复杂zip文件的解压问题”的完整攻略。 问题描述 在Python中使用zipfile模块解压较为简单的zip文件时,可以简单地使用如下代码: import zipfile zip_ref = zipfile.ZipFile(‘file.zip’, ‘r’) zip_ref.extractall(‘target_dir’) zip_re…

    python 2023年5月20日
    00
  • Python使用time模块实现指定时间触发器示例

    下面是“Python使用time模块实现指定时间触发器”完整攻略,包括示例。 模块介绍 time模块是Python标准库提供的用于时间相关操作的模块。通过time模块,可以获取当前时间、延时等待、时间格式转换等。 使用time模块实现指定时间触发器 我们可以用time模块实现一个简单的指定时间触发器,使得某些操作在指定的时间点开始执行。 获取当前时间 获取当…

    python 2023年5月14日
    00
  • 详细分析Python collections工具库

    详细分析Python collections工具库 collections是Python内置模块之一,它提供了许多有用的数据类型,以及一组针对这些数据类型的接口。本文将介绍collections模块中的几个常用数据类型,并提供一些示例说明。 Counter Counter是一个简单的计数器,用于统计元素出现的次数。它可以接受任何序列类型作为输入,并将元素存储…

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