python实现knn算法,并采用鸢尾花数据集验证

本文介绍了KNN算法,包括邻近算法和主要思路,并详细展示了算法设计过程,包括流程图和具体实现。通过使用鸢尾花数据集进行训练和测试,结果显示预测准确,对算法的优点和缺点进行了总结。
摘要由CSDN通过智能技术生成

一、knn算法介绍

(1)邻近算法
或者说K最近邻(kNN,k-NearestNeighbor)分类算法是数据挖掘
分类技术中最简单的方法之一。所谓K最近邻,就是k个最近的邻居的
意思,说的是每个样本都可以用它最接近的k个邻居来代表。
(2)主要思路
1. 准备数据,对数据进行预处理

2. 选用合适的数据结构存储训练数据和测试元组

3. 设定参数,如k

4.维护一个大小为k的的按距离由大到小的优先级队列,用于存储
最近邻训练元组。随机从训练元组中选取k个元组作为初始的最近
邻元组,分别计算测试元组到这k个元组的距离,将训练元组标号
和距离存入优先级队列

5. 遍历训练元组集,计算当前训练元组与测试元组的距离,将所
得距离L 与优先级队列中的最大距离Lmax

6. 进行比较。若L>=Lmax,则舍弃该元组,遍历下一个元组。若
L < Lmax,删除优先级队列中最大距离的元组,将当前训练元组
存入优先级队列。

7. 遍历完毕,计算优先级队列中k 个元组的多数类,并将其作为
测试元组的类别。

8. 测试元组集测试完毕后计算误差率,继续设定不同的k值重新
进行训练,最后取误差率最小的k值。

二、算法设计

(1)算法流程图

在这里插入图片描述

(2)算法实现
# -*- coding: utf-8 -*-
"""
@author: BaoHJ
"""
# 模仿sklearn 形式封装

from sklearn.datasets import load_iris  # 导入数据集iris
import math
from collections import Counter
import numpy as np


class K_NN:
    '''初始化'''
    def __init__(self
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您提供一个简单的Python代码示例,演示如何使用KNN算法对鸢尾花数据进行分类。首先,我们需要导入必要的库,包括NumPy和sklearn: ```python import numpy as np from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifier from sklearn.metrics import accuracy_score ``` 接下来,我们将加载鸢尾花数据集,并将其拆分为训练集和测试集: ```python # 加载鸢尾花数据集 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.2, random_state=42) ``` 然后,我们可以使用KNeighborsClassifier类来训练KNN模型: ```python # 训练KNN模型 k = 5 knn = KNeighborsClassifier(n_neighbors=k) knn.fit(X_train, y_train) ``` 最后,我们可以使用训练好的模型对测试集进行预测,并计算模型的准确率: ```python # 对测试集进行预测并计算准确率 y_pred = knn.predict(X_test) accuracy = accuracy_score(y_test, y_pred) print("Accuracy:", accuracy) ``` 完整的代码如下: ```python import numpy as np from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifier from sklearn.metrics import accuracy_score # 加载鸢尾花数据集 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.2, random_state=42) # 训练KNN模型 k = 5 knn = KNeighborsClassifier(n_neighbors=k) knn.fit(X_train, y_train) # 对测试集进行预测并计算准确率 y_pred = knn.predict(X_test) accuracy = accuracy_score(y_test, y_pred) print("Accuracy:", accuracy) ``` 希望这个示例对您有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值