【Python 3.7】机器学习笔记:KNN算法预测鸢尾花数据集的准确性问题

对鸢尾花数据集使用随机森林分类模型,输出评价指标 鸢尾花数据集是一个经典的分类问题,被广泛用于机器学习中的训练和测试,同时也是许多分类算法的实用案例(本例使用随机森林进行分类对7种评价指标进行输出展示)。 阅读详情

【Python 3.7】机器学习:KNN算法预测鸢尾花数据集的准确性问题

在 KNN.py 文件中的 KNN:

import numpy as np
from math import sqrt
from collections import Counter


class KNNClassifier:

    def __init__(self, k):
        """初始化kNN分类器"""
        assert k >= 1, "k must be valid"
        self.k = k
        self._X_train = None
        self._y_train = None

    def fit(self, X_train, y_train):
        """根据训练数据集X_train和y_train训练kNN分类器"""
        assert X_train.shape[0] == y_train.shape[0], \
            "the size of X_train must be equal to the size of y_train"
        assert self.k <= X_train.shape[0], \
            "the size of X_train must be at least k."

        self._X_train = X_train
        self._y_train = y_train
        return self

    def predict(self, X_predict):
        """给定待预测数据集X_predict,返回表示X_predict的结果向量"""
        assert self._X_train is not None and self._y_train is not None, \
                "must fit before predict!"
        assert X_predict.shape[1] == self._X_train.shape[1], \
                "the feature number of X_predict must be equal to X_train"

        y_predict = [self._predict(x) for x in X_predict]
        return np.array(y_predict)

    def _predict(self, x):
        """给定单个待预测数据x,返回x的预测结果值"""
        assert x.shape[0] == self._X_train.shape[1], \
            "the feature number of x must be equal to X_train"

        distances = [sqrt(np.sum((x_train - x) ** 2))
                     for x_train in self._X_train]
        nearest = np.argsort(distances)

        topK_y = [self._y_train[i] for i in nearest[:self.k]]
        votes = Counter(topK_y)

        return votes.most_common(1)[0][0]



    def __repr__(self):
        return "KNN(k=%d)" % self.k

建立测试的模型 model_selection.py 文件:

import numpy as np

def train_test_split(X,y,test_ratio=0.2,seed=None):
    """将数据 X 和 y 按照test_ratio分割成X_train, X_test, y_train, y_test"""
    assert X.shape[0]==y.shape[0]
    assert 0.0<=test_ratio<=1.0
    if seed:
        np.random.seed(seed)


    shuffle_indexes = np.random.permutation(len(X))


    test_size = int(len(X)*test_ratio)
    test_indexes = shuffle_indexes[:test_size]
    train_indexes = shuffle_indexes[test_size:]

    X_train = X[train_indexes]
    y_train = y[train_indexes]

    X_test = X[test_indexes]
    y_test = y[test_indexes]
    return X_train,X_test,y_train,y_test

调用KNN.py和model_selection.py中的函数来对鸢尾花数据集进行测试:

from sklearn.model_selection import train_test_split
from sklearn import datasets
'''载入鸢尾花数据集'''
iris=datasets.load_iris()
X=iris.data
y=iris.target

X_train, X_test, y_train, y_test = train_test_split(X,y)

from KNN import KNNClassifier
my_knn_clf=KNNClassifier(k=3)
my_knn_clf.fit(X_train,y_train)
y_predict=my_knn_clf.predict(X_test)

print(sum(y_predict==y_test))
"""预测准确率"""
print(sum(y_predict==y_test)/len(y_test))

运行一次的结果为:

37
0.9736842105263158
KNN算法预测鸢尾花种类 一、 作业题目 编写KNN原生算法利用鸢尾花数据集预测花的品种,并计算准确率。 二、算法设计 1、对KNN的认识 KNN是一种监督式的学习算法,算法的主要目的是根据训练实例和对象的特征值来将对象分类。 总结可得KNN算法的五个步骤: (1) 决定参数K,也就是最近邻居的个数 (2) 计算预测样本到所有训练样本的“距离” (3) 根据计算出的距离,找出“距离”最近的K个邻居 (4) 收集这K个邻居的... 阅读详情

相关推荐

机器学习之KNN算法及模型评估:鸢尾花分类实验

预测结果为:[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2]原测试的答案为:类别 0 的样本:36, 21, 19, 9, 39, 46, 3, 0, 47, 44类别 1 的样本:86, 71, 69, 59, 89, 96, 53, 50, 97, 94。

m0_74238712的博客 2268

基于鸢尾花数据集的预测评价指标---MSE\RMSE

4、MSE假设服从标准高分布,而MAE服从拉普拉斯分布而拉普拉斯分布本身就对异常值更具鲁棒性,当异常值出现时,拉普拉斯分布相比高斯分布受到的影响要小很多,因此以拉普拉斯分布假设的MAE在处理异常值是比高斯分布假设的MSE更加鲁棒。也就是说, MSE 会对误差较大(>1)的情况给予更大的惩罚,对误差较小(<1)的情况给予更小的惩罚。因为 MAE 计算的是误差 y-f(x) 的绝对值,无论是 y-f(x)>1 还是 y-f(x)<1,没有平方项的作用,惩罚力度都是一样的,所占权重一样。误差越大,该值越大。

weixin_52093896的博客 2126

knn分类算法(鸢尾花数据集实现

knn分类算法(鸢尾花数据集实现)1、题目:使用鸢尾花数据集,实现knn算法2、算法设计3、源代码4、测试用例设计及调试过程截屏5、经验总结如何创建一个注脚 1、题目:使用鸢尾花数据集,实现knn算法 这是python机器学习基础教程中第一章1.7部分的 2、算法设计 3、源代码 4、测试用例设计及调试过程截屏 5、经验总结 如何创建一个注脚 一个具有注脚的文本。1 注脚的解释 ↩︎ ...

qq_43527861的博客 3542

机器学习(五) 鸢尾花案例调优

Python 机器学习 2018年3天快速入门python机器学习【黑马程序员】 机器学习(五) 鸢尾花案例调优 1.交叉验证 2.网格搜索 及帮助我们选择最优的k值(在KNN算法调优中) 需要导入GirdSearchCV (网格,交叉) 3.案例,鸢尾花的优化 3.1 加入网格搜索与交叉验证 # 加入网格搜索与交叉验证 # 参数准备 param_dict = {'n_n...

Weary_PJ的博客 1338

Python 机器学习 K-近邻算法 鸢尾花种类预测

K-近邻算法(K-Nearest Neighbors, KNN)是一种简单而强大的机器学习算法,适用于分类和回归任务。可以使用scikit-learn库的KNN算法来预测鸢尾花(Iris)的种类。鸢尾花数据集是机器学习领域中常用的一个数据集,包含了150个鸢尾花样本,每个样本有四个特征:萼片长度、萼片宽度、花瓣长度和花瓣宽度,以及样本的种类(Setosa、Versicolour、Virginica)。

weixin_42098295的博客 1504

机器学习(四):基于KNN算法对鸢尾花类别进行分类预测

K最近邻(K-Nearest Neighbor,KNN)算法是一种用于分类和回归的非参数模型,它可以用于模式识别、图像处理、语音识别和推荐系统等领域。 KNN算法的基本思想是根据样本之间的距离和相似性进行分类,即将一个新的样本分类为其最近的K个邻居中最常见的类别。

阿极的博客 5663

【机器学习】KNN算法对鸢尾花进行分类

K最近邻(K-Nearest Neighbors,KNN)算法是一种常用的分类和回归算法。对于分类问题,KNN算法的基本思想是找出离待预测样本最近的K个训练样本,然后根据这K个样本的标签,通过投票或加权投票的方式来确定待预测样本的类别。iris数据集的中文名是安德森鸢尾花卉数据集,英文全称是Anderson’s Iris data set。iris包含150个样本,对应数据集的每行数据。每行数据包含每个样本的四个特征和样本的类别信息,所以iris数据集是一个150行5列的二维表。

weixin_62627529的博客 5263

[Python从零到壹] 十四.机器学习之分类算法五万字总结全网首发(决策树、KNN、SVM、分类对比实验)

分类(Classification)属于有监督学习(Supervised Learning)中的一类,它是数据挖掘、机器学习和数据科学中一个重要的研究领域。分类模型类似于人类学习的方式,通过对历史数据或训练集的学习得到一个目标函数,再用该目标函数预测新数据集的未知属性。本章主要讲述分类算法基础概念,并结合决策树、KNN、SVM分类算法案例分析各类数据集,从而让读者学会使用Python分类算法分析自己的数据集,研究自己领域的知识,从而创造价值。 19.1 分类 19.1.1 分类模型 与前面讲述的聚类模型类似

杨秀璋的专栏 2万+

KNN算法实现鸢尾花数据集分类

在python中使用 KNN算法实现鸢尾花数据集分类作者介绍数据集介绍KNN算法介绍用KNN实现鸢尾花分类 作者介绍 乔冠华,女,西安工程大学电子信息学院,2020级硕士研究生,张宏伟人工智能课题组。 研究方向:机器视觉与人工智能。 电子邮件:1078914066@qq.com 数据集介绍 Iris鸢尾花数据集: 包含 3 类分别为山鸢尾(Iris-setosa)、变色鸢尾(Iris-versicolor)和维吉尼亚鸢尾(Iris-virginica),共 150 条数据,每类各 50 个数据,每条记录都

ZHW-鲜橙大AI课题组的博客 1万+

黑马Java第二阶段:JavaWeb(笔记)

黑马Java第二阶段:JavaWeb(笔记)

chen的博客 5653

gdb对dwarf调试信息的解析和使用

gdb的对dwarf的调试信息的解析到使用的过程分析

JS072110的专栏 9568

【机器学习】基于KNN算法实现鸢尾花数据集的分类

🚀【机器学习新探】🚀 走进KNN算法的奇妙世界,用简单的逻辑征服复杂的鸢尾花分类任务!🌸 从KNN算法的基本原理讲起,一步步解锁鸢尾花数据集的神秘面纱。🔍 你将看到如何用代码驱动模型训练,如何巧妙选择K值提升分类性能。📈 更有拓展应用等你来探索,从文本分类到图像识别,KNN无所不能!🌐 看完这篇博客,你将收获满满,成为机器学习领域的佼佼者!#KNN算法 #鸢尾花分类 #机器学习实践 #拓展应用

创作高质量博文,分享知识,共同进步! 9381

手把手教你解决Kernel panic报错:init找不到的5种排查方法(附NFS挂载实战)

本文深入解析了Linux系统启动时出现“Kernel panic - not syncing: No working init found”报错的根本原因,并提供了五种系统性的排查方法。文章结合NFS挂载根文件系统的实战场景,详细阐述了从动态链接库依赖、内核引导参数、NFS权限配置、文件系统完整性到内核配置干扰的完整排查路径,帮助开发者快速定位并解决这一常见的系统启动故障。

weixin_29159995的博客 193

使用KNN算法对鸢尾花种类预测

使用KNN算法对鸢尾花种类预测一. 数据集介绍1.1 小数据集获取 load_*1.2 大数据集获取 fetch_*1.3 查看数据分布 seaborn画图的二. 数据集的划分三. 特征工程3.1 归一化处理MinMaxScaler3.2 标准化 StandardScaler四. 流程实现4.1 导包4.2获取数据集4.3 数据基本处理4.4 特征工程4.5 机器学习KNN算法进行模型训练4.6 模型评估五. KNN算法总结 悄悄介绍自己: 作者:神的孩子在跳舞 本人是快升大四的小白,在山西上学,学习的是

智的博客 4841

DOA估计算法从原理到仿真——CBF、Capon、MUSIC算法

从原理出发理解并实现经典的DOA估计算法

m0_55845774的博客 1万+

别再为倍福EL6021/EL6022的RS485接线头疼了!手把手教你硬件跳线与软件配置(附Modbus RTU主站例程)

本文详细解析了倍福EL6021/EL6022模块的RS485硬件跳线与软件配置方法,包括Modbus RTU主站编程实战。从端子定义、跳线操作到TwinCAT 3环境设置,提供完整的通信例程和故障排查技巧,帮助工程师快速解决工业现场通信问题。

weixin_30634661的博客 590

原生python实现knn分类算法(鸢尾花数据集)

写在前面 “近朱者赤,近墨者黑”。 有一种理解很有趣:“想要了解一个人,看看他周围是什么朋友就知道了。”这形象的诠释了KNN算法的思想。KNN算法在机器学习中属于监督学习,可以说是最简单的机器学习算法,它属于分类问题,其关键就是在庞大的训练集中找到与目标测试集近邻的几个数据点,以预测新测试集的结果。这里我参考了30分钟KNN算法的讲解(在这里膜拜一下讲课的老师,讲的很清楚~),针对机器学习中基...

恰恰冲鸭 5055

SAP-ABAP:新手入门篇——从0到1写出你的第一个ABAP Hello World程序并完成调试运行

本文是ABAP开发入门指南,详细介绍如何创建并运行第一个"Hello World"程序。主要内容包括:通过SE38事务码进入ABAP编辑器;创建以Z/Y开头的程序并保存为本地对象;编写简单的WRITE输出语句;完成语法检查、激活和执行流程;以及初步体验调试功能。文章特别强调ABAP开发的规范要求,如程序命名规则、激活与保存的区别等,并提供了详细的步骤说明和常见问题提示,帮助零基础开发者快速上手ABAP编程。

baidu_35680696的博客 479

机器学习之Python使用KNN算法对鸢尾花进行分类

文章目录2. 编写代码,实现对iris数据集的KNN算法分类及预测要求:第一步:引入所需库第二步:划分测试集占20%第三步:n_neighbors=5第四步:评价模型的准确率第五步:使用模型预测未知种类的鸢尾花 2. 编写代码,实现对iris数据集的KNN算法分类及预测 要求: (1)数据集划分为测试集占20%; (2)n_neighbors=5; (3)评价模型的准确率; (4)使用模型预测未知种类的鸢尾花。 (待预测数据:X1=[[1.5 , 3 , 5.8 , 2.2], [6.2 , 2.9 , 4

qq_46556714的博客 1万+

【AFAC2026金融智能-赛题二】2亿像素的面条图,我切了1000刀拼回完美Markdown

摘要: AFAC2026金融智能创新大赛的「复杂金融文档还原挑战」任务是将高分辨率金融文档截图转换为结构化Markdown文本。面对2亿像素的“面条图”和严格的计算限制(禁用主流大模型,仅允许调用FinixDoc-VL API且模型需小于10M),作者提出四层流水线解决方案: 图像预处理:通过文本行投影检测在行间隙处智能切图,避免截断文字; API调度:5路并发轮询请求,结合内容哈希缓存与指数退避重试机制优化调用效率; 后处理:采用最长公共子串匹配去除文本重叠,并设计表格对齐算法修复跨块表格; 结果输出:按

169

2026年【江苏“信息与未来”编程思维】真题及题解(T6:桌面游戏)

2026年【江苏“信息与未来”编程思维】真题及题解(T6:桌面游戏)

王老师青少年编程 534

机器学习——K-近邻算法(KNN)

K-近邻算法(K-Nearest Neighbors, 简称 KNN)是一种基于实例的机器学习算法,广泛应用于分类和回归任务。它通过计算数据点之间的相似度(通常是距离度量),然后预测新的数据点的标签或数值。在图像分类任务中,KNN 可以通过计算图像特征向量之间的距离来分类,例如手写数字识别。KNN 可用于垃圾邮件检测,通过比较新邮件和历史邮件的相似性,判断其类别。原则,根据 kkk 个最近邻居的类别进行投票,选出出现最多的类别。基于用户相似度的推荐系统中,KNN 常用于查找兴趣相似的用户群体。

CYTLOVELY的博客 4918

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

机器学习-KNN算法(鸢尾花分类实战)

“近朱者赤近墨者黑",所谓的K近邻,也就是根据样本相邻最近的K个数据来进行判断,看K个邻居中所属类别最多的是哪一类,则将该样本分为这一类。

有一分热,发一分光。 8579

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

KNN算法实现,(鸢尾花数据集分类)

KNN算法实现实例KNN算法一,KNN算法概述二,算法步骤KNN算法的具体实现一、数据获取二、具体代码的实现 KNN算法 一,KNN算法概述 knn算法,又叫k-近邻算法。属于一个分类算法,主要思想如下: 一个样本在特征空间中的k个最近邻的样本中的大多数都属于某一个类别,则该样本也属于这个类别。其中k表示最近邻居的个数。(通俗理解:和最近的几个是一类) 二维图示: 二,算法步骤 KNN算法的具...

bigtangyuan的博客 5909

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

k-近邻算法实现鸢尾花分类

k-近邻分类算法:给定一个训练集,对新输入的实例在这个集合中找k个与该实例最近的邻居,然后判断这k个邻居大多数属于某一类,于是新输入的实例就被划分为这一类。(属于惰性学习,并不具有明显的学习行为) 鸢尾花数据集,提取码:sqbo k-近邻算法的三个核心要素: k值的选取 邻居距离的度量 分类决策的制定 k值的选取对分类器的性能的影响。 k值小的影响 k值大的影响 近似误差小,但......

HadesHuo的博客 1万+
上一篇: 【Python 3.7】将点数相乘:同时掷两个骰子时,通常将它们的点数相加。请通过可视化展 示将两个骰子的点数相乘的结果。
下一篇: 【Python 3.7】餐馆:创建一个名为 Restaurant 的类,其方法 __init__() 设置两个属性: restaurant_name 和 cuisine_type 。
boyames
博客等级 码龄8年 80粉丝 88原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值