基于岩石和地雷的声纳数据集进行二元分类

一、问题描述

区别岩石和地雷的声纳数据集通常涉及使用特定的机器学习算法来分析和识别水下物体的声纳信号。这些数据集包含大量的声纳信号特征,用于训练模型以区分岩石和地雷。

二、数据集内容

如果你对地质学感兴趣,会发现这个声纳数据集非常有趣。它是利用声纳信号制成的,由两部分组成。第一部分名为“sonar.mines”,包含 111 个模式,这些模式是使用在不同角度和不同条件下从金属圆柱体反射的声纳信号制成的。第二部分名为“sonar.rocks”,由 97 个模式组成,同样是通过反射声纳信号制成,但这次反射的是岩石上的信号。它是一个不均衡数据集,包含 208 个示例、60 个输入特征和一个输出特征。

传输的声纳信号是一个频率调制的啁啾信号/frequency-modulated chirp,频率逐渐升高。数据集包含从各种不同方位角获得的信号,对于圆柱体跨越90度,对于岩石跨越180度。每个模式是一组范围在0.0到1.0之间的60个数字。每个数字代表在特定时间段内特定频率带内的能量积分。由于这些频率在啁啾过程中较晚传输,因此较高频率的积分孔径出现在较晚的时间。

与每条记录相关联的标注,若包含字母“R”,则物体是岩石,以及“M”,则物体是地雷(金属圆柱体)。标签中的数字按方位角的递增顺序排列,但它们不直接编码角度。

该数据集非常适合练习二元分类。它的制作目标是检测输入是地雷还是岩石。

数据结构

文件:sonar.mines

该文件包含111个信号,对应于来自金属圆柱体的声纳回波。以下样本是“方位角依赖性”实验训练集的一部分,标有号。没有标号的是测试集的一部分。

样例:

*CM078:
{0.0491 0.0279 0.0592 0.1270 0.1772 0.1908
 0.2217 0.0768 0.1246 0.2028 0.0947 0.2497
 0.2209 0.3195 0.3340 0.3323 0.2780 0.2975
 0.2948 0.1729 0.3264 0.3834 0.3523 0.5410
 0.5228 0.4475 0.5340 0.5323 0.3907 0.3456
 0.4091 0.4639 0.5580 0.5727 0.6355 0.7563
 0.6903 0.6176 0.5379 0.5622 0.6508 0.4797
 0.3736 0.2804 0.1982 0.2438 0.1789 0.1706
 0.0762 0.0238 0.0268 0.0081 0.0129 0.0161
 0.0063 0.0119 0.0194 0.0140 0.0332 0.0439}

文件:sonar.rocks

该文件包含97个信号,对应于来自岩石的声纳回波。以下样本是“方位角依赖性”实验训练集的一部分,标有号。没有标号的是测试集的一部分。

样例:

*CR036:
{0.0200 0.0371 0.0428 0.0207 0.0954 0.0986
 0.1539 0.1601 0.3109 0.2111 0.1609 0.1582
 0.2238 0.0645 0.0660 0.2273 0.3100 0.2999
 0.5078 0.4797 0.5783 0.5071 0.4328 0.5550
 0.6711 0.6415 0.7104 0.8080 0.6791 0.3857
 0.1307 0.2604 0.5121 0.7547 0.8537 0.8507
 0.6692 0.6097 0.4943 0.2744 0.0510 0.2834
 0.2825 0.4256 0.2641 0.1386 0.1051 0.1343
 0.0383 0.0324 0.0232 0.0027 0.0065 0.0159
 0.0072 0.0167 0.0180 0.0084 0.0090 0.0032}

文件:sonar.all-data

与每条记录相关联的标注,若包含字母“R”,则物体是岩石,以及“M”,则物体是地雷(金属圆柱体)。标签中的数字按方位角的递增顺序排列,但它们不直接编码角度。

样例:

0.0200,0.0371,0.0428,0.0207,0.0954,0.0986,0.1539,0.1601,0.3109,0.2111,0.1609,0.1582,0.2238,0.0645,0.0660,0.2273,0.3100,0.2999,0.5078,0.4797,0.5783,0.5071,0.4328,0.5550,0.6711,0.6415,0.7104,0.8080,0.6791,0.3857,0.1307,0.2604,0.5121,0.7547,0.8537,0.8507,0.6692,0.6097,0.4943,0.2744,0.0510,0.2834,0.2825,0.4256,0.2641,0.1386,0.1051,0.1343,0.0383,0.0324,0.0232,0.0027,0.0065,0.0159,0.0072,0.0167,0.0180,0.0084,0.0090,0.0032,R

数据集使用许可协议

This dataset is licensed under a Creative Commons Attribution 4.0 International (CC BY 4.0) license.

This allows for the sharing and adaptation of the datasets for any purpose, provided that the appropriate credit is given.

引用要求

Sejnowski, T. & Gorman, R. (1988). Connectionist Bench (Sonar, Mines vs. Rocks) [Dataset]. UCI Machine Learning Repository. https://doi.org/10.24432/C5T01Q.

三、二元分类

二元分类程序

程序pytorch-sonar-data-classification-practice.ipynb是一Jupyter Notebook,用于练习在PyTorch中构建神经网络。它基于Adrian Tam的文章《在PyTorch中构建二元分类模型》(Machine Learning Mastery),但增加了关于数据集的详细信息,并补充了更多关于如何在PyTorch中设计前馈神经网络(FNN)的细节。同时还通过尝试不同的特征选择和可视化技术来探索数据。因此,包含了一些可能对你也有用的有价值的内容。在选择神经网络算法之后,我寻找最佳的参数和正则化技术来增强模型。此外,我将FNN模型与更传统的统计学习方法(如支持向量机分类器SVC)进行了比较。

正如我们所见,如果已理解数据预处理、神经网络和Python中基本类继承的基本原理的话,在PyTorch中构建一个前馈神经网络相当简单。同样明显的是,一个具有适当数量的神经元和层的简单神经网络能够捕捉数据的复杂性,以正确分类金属和岩石圆柱体。然而,经典的机器学习算法,如逻辑回归和支持向量机分类器,在分类样本方面也能做得相当好。实际上,神经网络在分类金属圆柱体(标注为0)方面比逻辑回归算法和支持向量机分类器/SVC有更多的能力。

内容:

  1. 数据集介绍
  2. 加载训练数据
  3. 进行探索性数据分析(EDA)
  4. 使数据可供PyTorch使用
  5. 设计前馈神经网络(FNN)模型
  6. 定义FNN训练循环
  7. 使用k折交叉验证训练和评估模型性能
  8. 以推理模式运行模型
  9. 创建二元分类的接收者操作特征曲线(ROC)
  10. 比较神经网络和SVM分类器

安装

运行该程序需安装pytorch、常用数据分析库、逻辑回归库等。参考《安装深度学习框架PyTorch》《安装传统机器学习开发包》等文章。

四、参考资料

Building a Binary Classification Model in PyTorch – MachineLearningMastery.com

五、获取案例套件

需要登录后才允许下载文件包。登录

发表评论