机器学习实战第1天:鸢尾花分类任务

专栏介绍

欢迎订阅专栏——机器学习实战

机器学习实战_Nowl的博客-CSDN博客

纸上得来终觉浅

本专栏项目将着重于解决各类实际机器学习问题,带你上手各种场景的实际问题

数据集可以在我的资源中找到,也可以自行搜索

文中导入数据集的路径要改成自己的哦!!!

不了解机器学习基础的可以阅读专栏

机器学习_Nowl的博客-CSDN博客

文章目录

一、任务描述

二、数据集描述

三、主要代码

主要代码库的说明与导入方法

数据预处理

模型训练

模型预测与性能评估

除数据预处理外的完整代码

四、本章总结


 一、任务描述

鸢尾花分类任务是一个经典的机器学习问题,通常用于演示和测试分类算法的性能。该任务的目标是根据鸢尾花的特征将其分为三个不同的品种,即山鸢尾(Setosa)、变色鸢尾(Versicolor)和维吉尼亚鸢尾(Virginica)。这个任务是一个多类别分类问题,其中每个样本都属于三个可能的类别之一。


二、数据集描述

鸢尾花分类任务使用的数据集通常是著名的鸢尾花数据集(Iris dataset)。该数据集包含了150个鸢尾花样本,每个样本有四个特征:萼片长度(Sepal Length)、萼片宽度(Sepal Width)、花瓣长度(Petal Length)和花瓣宽度(Petal Width)。每个样本还标有其所属的品种。


三、主要代码

(1)主要代码库的说明与导入方法

  1. pandas (import pandas as pd):

    Pandas是一个用于数据处理和分析的强大库,提供了数据结构(如DataFrame和Series)和数据操作工具,使得在Python中进行数据清理、转换和分析变得更加方便。
  2. matplotlib.pyplot (import matplotlib.pyplot as plt):

    Matplotlib是一个用于绘制图表和可视化数据的2D绘图库。pyplot是Matplotlib的子模块,提供了类似于MATLAB的绘图接口,用于创建图表、直方图、散点图等。
  3. sklearn.model_selection (from sklearn.model_selection import train_test_split):

    train_test_split是scikit-learn中用于划分数据集为训练集和测试集的函数。它能够随机将数据划分为两个子集,是机器学习中常用的数据准备步骤之一。
  4. sklearn.svm (from sklearn import svm):

    Scikit-learn中的svm模块提供了支持向量机(SVM)算法的实现,包括用于分类和回归的支持向量分类器(SVC)和支持向量回归器(SVR)等。
  5. sklearn.metrics (from sklearn import metrics):

    metrics模块包含了许多用于评估模型性能的指标,例如准确性、精确度、召回率、F1分数等。这些指标可用于评估分类、回归和聚类等任务的模型性能。

(2)数据预处理

1.查看数据集基本情况

# 导入必要的库
import pandas as pd


# 从CSV文件读取鸢尾花数据集
iris = pd.read_csv("datasets/iris.csv")

# 查看数据集大小
print(iris.shape)

可以看到数据集为150行,6列的数据集

2.特征工程

我们可以绘制图像来观察数据特征的关系

# 导入必要的库
import pandas as pd
import matplotlib.pyplot as plt

# 从CSV文件读取鸢尾花数据集
iris = pd.read_csv("datasets/iris.csv")

# 绘制散点图,显示鸢尾花的萼片长度与萼片宽度,根据不同的品种用不同的颜色标识
plt.scatter(iris[iris.Species == 'Iris-setosa']["SepalLengthCm"], iris[iris.Species == 'Iris-setosa']["SepalWidthCm"], color="red", label="Setosa")
plt.scatter(iris[iris.Species == 'Iris-versicolor']["SepalLengthCm"], iris[iris.Species == 'Iris-versicolor']["SepalWidthCm"], color="green", label="Versicolor")
plt.scatter(iris[iris.Species == 'Iris-virginica']["SepalLengthCm"], iris[iris.Species == 'Iris-virginica']["SepalWidthCm"], color="blue", label="Virginica")

# 显示图例
plt.legend()

# 设置图表标题和轴标签
plt.title('Scatter Plot of Sepal Length vs Sepal Width for Iris Flowers')
plt.xlabel('Sepal Length (cm)')
plt.ylabel('Sepal Width (cm)')

# 显示图形
plt.show()

绘制花萼长与宽的关系图,我们发现蓝色和绿色的点混在一起,这就代表着这两个特征不能很好地区别鸢尾花的种类


# 绘制散点图,显示鸢尾花的花瓣长度与花瓣宽度,根据不同的品种用不同的颜色标识
plt.scatter(iris[iris.Species == 'Iris-setosa']["PetalLengthCm"], iris[iris.Species == 'Iris-setosa']["PetalWidthCm"], color="red", label="Setosa")
plt.scatter(iris[iris.Species == 'Iris-versicolor']["PetalLengthCm"], iris[iris.Species == 'Iris-versicolor']["PetalWidthCm"], color="green", label="Versicolor")
plt.scatter(iris[iris.Species == 'Iris-virginica']["PetalLengthCm"], iris[iris.Species == 'Iris-virginica']["PetalWidthCm"], color="blue", label="Virginica")

绘制花瓣长与宽的关系图,我们发现不同颜色的点基本上被区分在了不同的区域,这很好,让我们用这两个特征来进行模型训练吧。


(3)模型训练

在这里我们使用svm分类模型来训练

# 导入必要的库
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn import svm


# 从CSV文件读取鸢尾花数据集
iris = pd.read_csv("datasets/iris.csv")

# 将数据集划分为训练集和测试集,测试集占总数据的20%
train, test = train_test_split(iris, test_size=0.2)

# 提取训练集和测试集的特征和标签
train_x = train[['SepalLengthCm', 'SepalWidthCm', 'PetalLengthCm', 'PetalWidthCm']]
train_y = train.Species
test_x = test[['SepalLengthCm', 'SepalWidthCm', 'PetalLengthCm', 'PetalWidthCm']]
test_y = test.Species

# 创建支持向量机(SVM)分类器模型
model = svm.SVC()

# 在训练集上拟合SVM模型
model.fit(train_x, train_y)

(4)模型预测与性能评估

评估模型的性能

from sklearn import metrics


# 使用训练好的模型对测试集进行预测
prediction = model.predict(test_x)

# 打印SVM模型的准确性
print('The accuracy of the SVM is:', metrics.accuracy_score(prediction, test_y))

结果是1.0,这代表在测试集上的预测百分百正确,这是由于数据集较小,并且特征较少的原因,我们将在之后遇到更加复杂的情况


(5)除数据预处理外的完整代码

# 导入必要的库
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn import svm
from sklearn import metrics

# 从CSV文件读取鸢尾花数据集
iris = pd.read_csv("datasets/iris.csv")

# 将数据集划分为训练集和测试集,测试集占总数据的20%
train, test = train_test_split(iris, test_size=0.2)

# 提取训练集和测试集的特征和标签
train_x = train[['SepalLengthCm', 'SepalWidthCm', 'PetalLengthCm', 'PetalWidthCm']]
train_y = train.Species
test_x = test[['SepalLengthCm', 'SepalWidthCm', 'PetalLengthCm', 'PetalWidthCm']]
test_y = test.Species

# 创建支持向量机(SVM)分类器模型
model = svm.SVC()

# 在训练集上拟合SVM模型
model.fit(train_x, train_y)

# 使用训练好的模型对测试集进行预测
prediction = model.predict(test_x)

# 打印SVM模型的准确性
print('The accuracy of the SVM is:', metrics.accuracy_score(prediction, test_y))



四、本章总结

  • 如何查看数据集的大小
  • 基本的探索数据之间关系的方法
  • 对数据集进行划分的方法
  • 基本的模型训练
  • 基本的模型评估方法

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

华为obs上传下载-Java版 2023-11-23

弄了半天,老师帮弄成功了,经过同意,分享到网上,希望能帮助更多人,至于怎么弄的,我也不知道。 创建idea项目后,项目结构,对应文件没有的创一个 pom.xm 注意改Java版本,我…

解决Vision Transformer在任意尺寸图像上微调的问题:使用timm库

解决Vision Transformer在任意尺寸图像上微调的问题:使用timm库 文章目录 一、ViT的微调问题的本质二、Positional Embedding如何处理1,绝对位置编码2,相对位置编码3,对位置编码进行插值 三、Patch Embedding Layer如何处理四、使…

算法设计与分析复习--分支界限法

文章目录 上一篇分支界限法性质装载问题0-1背包问题单源最短路问题最大团问题下一篇 上一篇 算法设计与分析复习–回溯法(二) 分支界限法性质 分支界限法是按广度优先策略或最小耗费优先遍历问题的解空间树。 搜索解空间: 子集树排列树 …

轻量级压测工具Apache Bench实战

📢专注于分享软件测试干货内容,欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!📢交流讨论:欢迎加入我们一起学习!📢资源分享:耗时200小时精选的「软件测试」资…

【c++】——类和对象(下) 万字解答疑惑

作者:chlorine 专栏:c专栏 目录 🚩再谈构造函数 🎓构造函数体赋值 🎓初始化列表 🚩explicit关键字 🚩static成员 🎓概念 面试题:计算创建多少个类对象 🎓特性 【问题】(非)…

香蕉派BPI-M4 Zero单板计算机采用全志H618,板载2GRAM内存

Banana Pi BPI-M4 Zero 香蕉派 BPI-M4 Zero是BPI-M2 Zero的最新升级版本。它在性能上有很大的提高。主控芯片升级为全志科技H618 四核A53, CPU主频提升25%。内存升级为2G LPDDR4,板载8G eMMC存储。它支持5G WiFi 和蓝牙, USB接口也升级为type-C。 它具有与树莓派 …

内部网关协议_路由信息协议RIP_开放路径优先OSPF协议_基本知识

目录: 因特网路由选择协议概述 路由信息协议RIP 开放路径优先OSPF协议 因特网路由选择协议概述 一.路由选择分类 静态路由选择和动态路由选择 静态路由选择: 采用人工配置的方式给路由器添加网络路由、默认路由和特定主机路由等路由条目。静态路由选择简单、开销小&#…

在Spring Boot中使用ECharts绘制数据图表

使用ECharts来完成一些花里胡哨的图表吧,一般这种需求我们在我们的客户端不太常见,但是,我们在后端进行各种数据统计的时候就会发现ECharts的优点了,比如我们常常做的柱状图,折线图,雷达图等可视化形式&…

最常用的5款报表系统

在这个信息化飞速发展的时代,报表系统已经成为了企业管理和决策的重要工具。随着市场的需求不断增长,报表系统也在不断地更新和完善。如今,市面上有数不尽的报表系统,但是哪款才是最常用的呢?接下来,我们将…

CSS伪类选择器详细讲解

前言 伪类选择器在CSS中起到的作用可以说是至关重要的,如果CSS没有伪类选择器,有很多效果都要借助js来完成,这样不仅代码量增加,维护起来你难度也大。这样程序员的工作量大,也违背了CSS诞生的作用,就是提高…

STM32F103C8T6第5天:独立看门狗、窗口看门狗、dma实验

1. 独立看门狗IWDG介绍(341.45) 什么是看门狗? 在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断&#…

美国云服务器:CN2/纯国际/高防线路介绍

​  谈到国外云服务器,美国云服务器必有一席之地。但是,一般来说使用美国云服务器,线路质量是一个重要的考虑因素。如果线路选择不合理,就有可能造成速度减慢或者安全隐患问题产生。本文将介绍美国云服务器的CN2/纯国际/高防三种…

PHP反序列化简单使用

注:比较简陋,仅供参考。 编写PHP代码,实现反序列化的时候魔法函数自动调用计算器 PHP反序列化 serialize(); 将对象序列化成字符串 unserialize(); 将字符串反序列化回对象 创建类 class Stu{ public $name; public $age; public $sex; publi…

有一台电脑一部手机就可以在网上赚钱,这些项目你也可以学会

很多人都希望能够在家中或者闲暇的时候,能够在网上赚钱,而网络给了我们这样的可能。只要有一台电脑和一部手机,你就可以开始你的赚钱之旅。这些项目并不难,只要你肯学,就一定能够成功。 1、美工设计 这个副业主要是推荐…

python plot绘图

使用python绘制t-sne图,并保存 一下是一个将que_im_features向量可视化的例子: def emb_save(que_im_features,i):# 向量[75, 640, 11, 11], episodeimport numpy as npimport pandas as pdfrom sklearn import manifoldimport matplotlib.pyplot as p…

jmeter中调用python代码

1、安装pyinstaller pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyinstaller 2、将py脚本打包 pyinstaller -F venv/get_image/OCR_jmeter_api.py 3、jmeter中添加OS Process Sampler并调用dist下的程序 4、执行jmeter

Jmeter 压测实战保姆级入门教程

1、Jmeter本地安装 1.1、下载安装 软件下载地址: https://mirrors.tuna.tsinghua.edu.cn/apache/jmeter/binaries/ 选择一个压缩包下载即可 然后解压缩后进入bin目录直接执行命令jmeter即可启动 1.2 修改语言 默认是英文的,修改中文,点击…

RubbleDB: CPU-Efficient Replication with NVMe-oF

RubbleDB: CPU-Efficient Replication with NVMe-oF 前言 这是ATC2023的文章,作者来自哥伦比亚大学这篇工作在LSM-tree多副本存储的场景下,利用NVMe-oF技术避免了LSM-tree副本上的重复合并,减少了CPU开销。 Introduction 为了提供高可用性…

Python 装饰器用法详解

目录 一、基本概念 二、语法形式 三、用法示例 1、用于日志记录 2、用于性能测试 3、用于事务处理 4、用于缓存结果 5、用于权限验证 总结 Python装饰器是Python中一种非常有用且强大的工具,它允许我们在不修改原有函数或类的基础上,对它们进行…

物联网AI MicroPython学习之语法 WDT看门狗外设

学物联网,来万物简单IoT物联网!! WDT 介绍 模块功能: 看门狗WDT(WatchDog Timer)外设驱动模块 接口说明 WDT - 构建WDT对象 函数原型:WDT(timeout)参数说明: 参数类型必选参数&#xff1f…
最新文章