【机器学习实战入门项目】基于机器学习的鸢尾花分类项目

基于机器学习的鸢尾花分类项目

介绍:

本项目利用机器学习模型对鸢尾花进行分类。鸢尾花数据集是一个著名的机器学习数据集,包含三种类别的花朵:Setosa、Versicolor和Virginica,每种类别由四个特征描述:萼片长度、萼片宽度、花瓣长度和花瓣宽度。

什么是机器学习?

机器学习是关于从数据中学习预测或提取知识的过程。它是人工智能的一个子领域。机器学习算法基于样本数据(即训练数据)构建模型,并根据训练数据对新数据进行预测。

机器学习的类别:
  1. 监督学习:基于带有正确输出标签的已标注训练数据进行训练。
  2. 无监督学习:不基于标签数据进行学习,而是从无标签数据中学习模式,通常用于聚类分析。
  3. 半监督学习:介于监督学习和无监督学习之间,使用少量标注数据和大量未标注数据进行训练。
机器学习的应用:
  1. 语音识别:利用自然语言处理(NLP)将人类语音转换为文本,反之亦然。例如:Google Assistant、Alexa、Siri。
  2. 推荐引擎:根据用户的历史行为和搜索数据,推荐新产品或内容。例如:亚马逊产品推荐、Spotify音乐推荐。
  3. 聊天机器人:在无需人工代理的情况下提供客户服务,根据用户提问给出回答。
方法:

本项目将采用监督学习方法,使用称为“支持向量机”(SVM)的算法进行分类。

先决条件:
  • 库:NumPy、Matplotlib、Seaborn、Pandas、Scikit-learn
鸢尾花分类步骤:
  1. 加载数据

    • 使用Pandas加载数据集。
    import pandas as pd
    columns = ['Sepal length', 'Sepal width', 'Petal length', 'Petal width', 'Class_labels']
    df = pd.read_csv('iris.data', names=columns)
    print(df.head())
    
  2. 分析和可视化数据

    • 进行基本的统计分析。
      print(df.describe())
      
    • 使用Seaborn可视化数据。
      import seaborn as sns
      sns.pairplot(df, hue='Class_labels')
      
    • 绘制各类别的特征平均值图。
      import matplotlib.pyplot as plt
      import numpy as np
      # 绘制平均值的代码
      
  3. 模型训练

    • 将数据划分为训练集和测试集。
      from sklearn.model_selection import train_test_split
      X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.2)
      
    • 使用SVM算法训练模型。
      from sklearn.svm import SVC
      svn = SVC()
      svn.fit(X_train, y_train)
      
  4. 模型评估

    • 在测试集上进行预测。
      predictions = svn.predict(X_test)
      
    • 计算模型的准确率。
      from sklearn.metrics import accuracy_score
      print("准确率:", accuracy_score(y_test, predictions))
      
    • 生成详细的分类报告。
      from sklearn.metrics import classification_report
      print(classification_report(y_test, predictions))
      
  5. 测试模型

    • 对新的、未见数据进行预测。
      X_new = np.array([[3, 2, 1, 0.2], [4.9, 2.2, 3.8, 1.1], [5.3, 2.5, 4.6, 1.9]])
      prediction = svn.predict(X_new)
      print("预测的物种:", prediction)
      
  6. 保存和加载模型

    • 使用pickle保存训练好的模型。
      import pickle
      with open('SVM.pickle', 'wb') as f:pickle.dump(svn, f)
      
    • 加载模型以供 future 使用。
      with open('SVM.pickle', 'rb') as f:model = pickle.load(f)
      print(model.predict(X_new))
      
总结:

本项目展示了使用SVM算法构建机器学习模型对鸢尾花进行分类的过程。涵盖了数据加载、分析、模型训练、评估和部署。该模型在分类准确率上达到了96%以上,证明了其在根据萼片和花瓣测量值分类鸢尾花方面的有效性。

彩蛋数据介绍:

数据集特征

  • 数据类型: 表格型数据
  • 学科领域: 生物学
  • 相关任务: 分类
  • 特征类型: 实数型
  • 实例数量: 150
  • 特征数量: 4

数据集信息

  • 实例代表什么: 每个实例代表一种植物。
  • 附加信息: 该数据集是最早用于评估分类方法的数据集之一,来自费舍尔1936年的研究。数据集包含3类,每类50个实例,其中一类与其他两类线性可分,而其他两类之间不可线性分离。
  • 预测属性: 鸢尾花的种类(Iris Setosa, Iris Versicolour, 或 Iris Virginica)。
  • 是否有缺失值: 没有。

变量表

变量名称角色类型描述单位缺失值
花萼长度特征连续型花萼的长度厘米
花萼宽度特征连续型花萼的宽度厘米
花瓣长度特征连续型花瓣的长度厘米
花瓣宽度特征连续型花瓣的宽度厘米
种类目标分类型鸢尾花的种类

数据集文件

  • bezdekIris.data: 4.4 KB
  • iris.data: 4.4 KB
  • iris.names: 2.9 KB
  • Index: 105 Bytes

引用论文

  • 论文标题: The Iris data set: In search of the source of virginica
  • 作者: A. Unwin, K. Kleinman
  • 发表年份: 2021
  • 发表期刊: Significance

注意事项

  • 第35个样本应为:4.9,3.1,1.5,0.2,“Iris-setosa”,错误出现在第四个特征。
  • 第38个样本应为:4.9,3.6,1.4,0.1,“Iris-setosa”,错误出现在第二个和第三个特征。

通过以上信息,您可以更好地理解和使用该数据集进行研究和分析。

鸢尾花分类项目
数据集
https://archive.ics.uci.edu/ml/datasets/Iris
源代码
https://data-flair.training/blogs/iris-flower-classification/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/2843.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大疆最新款无人机发布,可照亮百米之外目标

近日,DJI 大疆发布全新小型智能多光旗舰 DJI Matrice 4 系列,包含 Matrice 4T 和 Matrice 4E 两款机型。DJI Matrice 4E 价格为27888 元起,DJI Matrice 4T价格为38888元起。 图片来源:大疆官网 DJI Matrice 4E DJI Matrice 4T D…

掌握C语言内存布局:数据存储的智慧之旅

大家好,这里是小编的博客频道 小编的博客:就爱学编程 很高兴在CSDN这个大家庭与大家相识,希望能在这里与大家共同进步,共同收获更好的自己!!! 目录 引言正文一、数据类型介绍1.内置类型2.自定义…

图论的起点——七桥问题

普瑞格尔河从古堡哥尼斯堡市中心流过,河中有小岛两座,筑有7座古桥,哥尼斯堡人杰地灵,市民普遍爱好数学。1736年,该市一名市民向大数学家Euler提出如下的所谓“七桥问题”: 从家里出发,7座桥每桥…

ubuntu20.04安装MySQL5.7

deb安装 下载deb文件并配置 wget https://repo.mysql.com//mysql-apt-config_0.8.12-1_all.deb sudo dpkg -i mysql-apt-config_0.8.12-1_all.deb我使用xshell可以正常。 这个弹出框里,选择的是“ubuntu bionic”。(在终端工具上,有可能显示不了选项)【…

openharmony标准系统方案之瑞芯微RK3568移植案例

标准系统方案之瑞芯微RK3568移植案例 ​本文章是基于瑞芯微RK3568芯片的DAYU200开发板,进行标准系统相关功能的移植,主要包括产品配置添加,内核启动、升级,音频ADM化,Camera,TP,LCD&#xff0c…

【C语言】_求字符串长度函数strlen

目录 1. 函数声明及功能 2. 注意事项 3. 模拟实现 3.1 方式1:计数器方式 3.2 方式2:指针-指针方式 3.3 方式3:递归方式(不创建临时变量计数器方式) 4. strlen相关例题 1. 函数声明及功能 size_t strlen ( cons…

【大前端】Vue3 工程化项目使用详解

目录 一、前言 二、前置准备 2.1 环境准备 2.1.1 create-vue功能 2.1.2 nodejs环境 2.1.3 配置nodejs的环境变量 2.1.4 更换安装包的源 三、工程化项目创建与启动过程 3.1 创建工程化项目 3.2 项目初始化 3.3 项目启动 3.4 核心文件说明 四、VUE两种不同的API风格 …

微软开源AI Agent AutoGen 详解

AutoGen是微软发布的一个用于构建AI Agent系统的开源框架,旨在简化事件驱动、分布式、可扩展和弹性Agent应用程序的创建过程。 开源地址: GitHub - microsoft/autogen: A programming framework for agentic AI 🤖 PyPi: autogen-agentchat Discord: https://aka.ms/auto…

cursor重构谷粒商城02——30分钟构建图书管理系统【cursor使用教程番外篇】

前言:这个系列将使用最前沿的cursor作为辅助编程工具,来快速开发一些基础的编程项目。目的是为了在真实项目中,帮助初级程序员快速进阶,以最快的速度,效率,快速进阶到中高阶程序员。 本项目将基于谷粒商城…

[Qualcomm]Qualcomm MDM9607 SDK代码下载操作说明

登录Qualcomm CreatePoing Qualcomm CreatePointhttps://createpoint.qti.qua

【15】Word:互联网发展状况❗

目录 题目​ NO2 NO3 NO4 NO5 NO6 NO7.8.9 NO7 NO8 NO9 NO10 题目 NO2 布局→页面设置→纸张:A4→页边距:上下左右→版式:页眉/页脚页码范围:多页:对称页边距→内侧/外侧→装订线 NO3 首先为文档应用内置…

ROS1学习记录

我使用的是ubuntu20.04下的ROS Noetic版本,是ROS 1 的最后一个长期支持(LTS)版本,将于2025年5月停止维护 一,Linux系统基本操作 ctrlaltt快速打开终端 1,pwd命令 查看当前终端所在路径 使用方式&#…

Go Ebiten小游戏开发:贪吃蛇

贪吃蛇是一款经典的小游戏,玩法简单却充满乐趣。本文将介绍如何使用 Go 语言和 Ebiten 游戏引擎开发一个简单的贪吃蛇游戏。通过这个项目,你可以学习到游戏开发的基本流程、Ebiten 的使用方法以及如何用 Go 实现游戏逻辑。 项目简介 贪吃蛇的核心玩法是…

ASP.NET Core - .NET 6 以上版本的入口文件

ASP.NET Core - .NET 6 以上版本的入口文件 自从.NET 6 开始,微软对应用的入口文件进行了调整,移除了 Main 方法和 Startup 文件,使用顶级语句的写法,将应用初始化的相关配置和操作全部集中在 Program.cs 文件中,如下&…

Chapter1:初见C#

参考书籍:《C#边做边学》; 1.初见C# 1.1 C#简介 C # {\rm C\#} C#编写了许多完成常用功能的程序放在系统中,把系统中包含的内容按功能分成多个部分,每部分放在一个命名空间中,导入命名空间语法格式如下: /…

React封装倒计时按钮

背景 在开发过程中,经常需要使用到倒计时的场景,当用户点击后,按钮进行倒计时,然后等待邮件或者短信发送,每次都写重复代码,会让代码显得臃肿,所以封装一个组件来减少耦合 创建一个倒计时组件…

【编译构建】用cmake编译libjpeg动态库并实现转灰度图片

先编译出libjepg动态库 1、下载libjpeg源码: https://github.com/libjpeg-turbo/libjpeg-turbo 2、编译出动态库或静态库 写一个编译脚本,用cmake构建。 #!/bin/bash# 定义变量 SOURCE_DIR"/home/user/libjpeg-turbo-main" BUILD_DIR"${SOURCE_…

ORB-SLAM2源码学习: Frame.cc: cv::Mat Frame::UnprojectStereo将某个特征点反投影到三维世界坐标系中

前言 这个函数是在跟踪线程中更新上一帧的函数中被调用。 1.函数声明 cv::Mat Frame::UnprojectStereo(const int &i) 2.函数定义 1.获取这个特征点的深度值。 const float z mvDepth[i];深度值由双目或 RGB-D 传感器获取。 在双目情况下,这个深度来自…

单片机存储器和C程序编译过程

1、 单片机存储器 只读存储器不是并列关系,是从ROM发展到FLASH的过程 RAM ROM 随机存储器 只读存储器 CPU直接存储和访问 只读可访问不可写 临时存数据,存的是CPU正在使用的数据 永久存数据,存的是操作系统启动程序或指令 断电易失 …

【Excel】【VBA】双列排序:坐标从Y从大到小排列之后相同Y坐标的行再对X从小到大排列

Excel VBA 双列排序 功能概述 这段VBA代码实现了Excel中的双列排序功能,具体是: 跳过前3行表头先按C列数据从大到小排序在C列值相同的情况下,按B列从大到小排序排序时保持整行数据的完整性 流程图 #mermaid-svg-XJERemQluZlM4K8l {font-fa…