当前位置: 首页 > article >正文

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

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

介绍:

本项目利用机器学习模型对鸢尾花进行分类。鸢尾花数据集是一个著名的机器学习数据集,包含三种类别的花朵: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.kler.cn/a/505989.html

相关文章:

  • 关于jwt和security
  • 手摸手实战前端项目CI CD
  • java根据模板导出word,并在word中插入echarts相关统计图片以及表格
  • vim将一行行尾倒数第三个字符替换成1
  • 小结:路由器和交换机的指令对比
  • Qt中容器 QVector、QList、QSet和QMap 性能与用途比较
  • C++:工具VSCode的编译和调试文件内容:
  • Python爬虫:从入门到实践
  • 路由环路的产生原因与解决方法(1)
  • 在Android 15的设备上关闭edge-to-edge功能
  • uniapp 页面铺满屏幕
  • STM32 FreeRTOS 信号量
  • 使用docker-compose安装ELK(elasticsearch,logstash,kibana)并简单使用
  • Web基础-分层解耦-IOC与DI入门(具体的是实现步骤)
  • 遥感原理及图像处理
  • 向量数据库Milvus详解
  • day_2_排序算法和树
  • IOS工程师
  • 隧道网络:为数据传输开辟安全通道
  • HttpClient和HttpGet实现音频数据的高效爬取与分析
  • Unity中实现倒计时结束后干一些事情
  • Leetcode 72. 编辑距离 动态规划
  • ASP.NET Core - 配置系统之自定义配置提供程序
  • pytorch小记(六):pytorch中的clone和detach操作:克隆/复制数据 vs 共享相同数据但 与计算图断开联系
  • 【Vue】父组件向子组件传递参数;子组件向父组件触发自定义事件
  • iOS手势shouldBeRequiredToFailByGestureRecognizer 机制