【机器学习实战入门项目】基于机器学习的鸢尾花分类项目 Iris Flower Classification Project using Machine Learning【含代码数据集】【亲测有效】

发布于:2025-02-10 ⋅ 阅读:(51) ⋅ 点赞:(0)

基于机器学习的鸢尾花分类项目 Iris Flower Classification Project using Machine Learning

介绍:

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

什么是机器学习?

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

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

本项目将采用监督学习方法,使用称为“支持向量机”(SVM)的算法进行分类。
在这个项目中,我们将使用一种称为“支持向量机”的算法,通过监督学习的方法来解决这个问题。

在这个项目中,我们将使用一种称为“支持向量机”的算法,通过监督学习的方法来解决这个问题。

支持向量机:支持向量机(也称为支持向量网络)是一种监督机器学习算法,用于分类和回归分析。SVM 是最鲁棒的分类方法之一。

SVM 通过在两个类别之间近似一条分隔线(超平面)来实现分类。
在这里插入图片描述
SVM 算法会找到两个类别中距离分隔线最近的点,这些点被称为支持向量。接着,算法会计算分隔线与支持向量之间的距离,这个距离被称为间隔。SVM 的主要目标是最大化这个间隔。具有最大间隔的超平面被称为最优超平面
在这里插入图片描述
SVM 主要原生支持二分类问题。对于多分类问题,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())
    

在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

  1. 模型训练

    • 将数据划分为训练集和测试集。
      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)
      
  2. 模型评估

    • 在测试集上进行预测。
      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))
      
  3. 测试模型

    • 对新的、未见数据进行预测。
      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)
      
  4. 保存和加载模型

    • 使用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”,错误出现在第二个和第三个特征。

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

鸢尾花分类项目
源码和数据集:链接: 鸢尾花分类项目 源代码与数据集 iris-flower-classification-project 源码和数据集


网站公告

今日签到

点亮在社区的每一天
去签到