ToB企服应用市场:ToB评测及商务社交产业平台

标题: 使用特性选择与支持向量机分析UCI数据库声呐(Sonar)数据集 [打印本页]

作者: 饭宝    时间: 2024-12-26 07:01
标题: 使用特性选择与支持向量机分析UCI数据库声呐(Sonar)数据集
一、UCI数据库中Sonar数据集简介

Sonar数据集,全称为"Connectionist Bench (Sonar, Mines vs. Rocks)",是UCI呆板学习库中一个经典的数据集,常用于模式辨认和呆板学习研究领域。这个数据集最初是由加拿大Dalhousie大学的Ian T. Nabney博士收集整理,用于练习神经网络和其他分类算法,以辨认海洋环境中的水雷和岩石。

数据来源及背景
该数据集来源于海军研究项目,此中包含了60个频率脉冲声纳信号的反射强度测量值,这些信号是从水中固定位置发射的,目标是水底的物体,包罗金属水雷和各种类型的岩石。数据收罗设备是一套拖曳阵列声纳系统(Towed Array Sonar System),可以或许在差异角度和频率下发送声波并接收回波,通太过析这些回波的特性来判定海底物体的类型。

数据集详情
- 样本数量:共有208个样本,此中97个是水雷(标记为'M'),111个是岩石(标记为'R')。
- 特性数量:每个样本包含60个浮点型属性,这些属性代表了差异频率脉冲声纳信号的反射强度。
- 目标变量:数据会合的末了一个字段是分类标签,指示该样本是水雷还是岩石。

数据格式与布局
数据集以逗号分隔的文本文件格式存储,每行代表一个样本,此中前60列为特性值,第61列是种别标签。比方,一行数据可能看起来像这样:“0.0070,0.0185,...,0.0943,R”。

数据用途
Sonar数据集广泛应用于多种呆板学习场景,特别是分类题目标研究,包罗但不限于:
- 测试和比力差异分类算法的性能。
- 探究特性选择和降维技能的有效性。
- 验证数据预处置惩罚和清洗策略的重要性。
- 实验超参数优化和模型选择的过程。

由于数据集的多样性和清楚定义的任务,它成为了学术界和工业界进行初步算法实验的理想之选。无论是初学者还是资深数据科学家,都可以从中获取有价值的经验和洞见。
二、特性选择与支持向量机简介
特性选择
特性选择是呆板学习和数据分析中的一个重要步骤,重要目标是从一组初始特性中挑选出最具影响力的子集,以提升模型的性能,同时减少模型复杂度,提高模型泛化本领,加快练习和猜测的速度。特性选择有助于解决“维度劫难”题目,即随着特性数量增加,模型容易陷入过拟合的状态。

方法概述
特性选择重要有三种类型的方法:
1. Filter Methods(过滤式方法):这类方法独立于任何呆板学习算法工作,仅依赖于某些统计度量来评价特性的相关性,常见的有相关系数、卡方检验、互信息等。

2. Wrapper Methods(包裹式方法):它们使用详细的呆板学习算法作为黑盒,通过添加或删除特性,探求最佳特性聚集,典型算法包罗递归特性消除(Recursive Feature Elimination, RFE)、遗传算法等。

3. Embedded Methods(嵌入式方法):这类方法在模型练习的过程中自动完成特性选择,如正则化方法(Lasso、Elastic Net),决策树和随机森林中的特性重要性排名等。

支持向量机(SVM)
支持向量机(Support Vector Machine, SVM)是一种监督学习模型,重要用于分类和回归分析。它的核心思想是找到一个超平面,使得两类之间的间隔最大化,纵然得离超平面最近的样本点(支持向量)间隔超平面的间隔最大。这样的超平面被称为最大间隔超平面,它可以或许最好地划分两个种别的数据。

工作原理
1. 线性可分情况:在二维空间中,如果数据可以通过一条直线完善分开,那么在多维空间中,就存在一个超平面可以或许将差异种别的数据分开。
   
2. 非线性情况:对于线性不可分的数据,SVM会利用核技巧(Kernel Trick)将数据映射到更高维度的空间,使之成为线性可分。常用的核函数包罗多项式核、径向基函数核(RBF核)等。

3. 软边界:在真实天下的分类题目中,很少能找到完善的分类边界。因此,SVM允许肯定水平上的误分类,引入松弛变量和惩罚参数C来控制偏差项的影响水平。

特性选择与SVM的结合
特性选择在SVM的应用中尤为重要,缘故原由在于:
- 减少特性数量可以降低SVM练习的时间复杂度。
- 只保存与目标相关的特性可以增强模型的泛化本领,防止过拟合。
- 简化的模型更易于理解和摆设。

在实际应用中,特性选择可以作为预处置惩罚步骤,也可以集成到SVM的学习过程中。比方,RFE(递归特性消除)方法就是一种常用的技能,它基于SVM权重系数的大小来进行特性排序和选择;而L1正则化的线性SVM(如LinearSVC with 'l1' penalty)也能自然地实现特性选择。

综上所述,特性选择和SVM在呆板学习中各自扮演偏重要的角色,合理运用两者可以或许显著提升模型的效率和猜测精度。
三、代码实现
  1. from sklearn.model_selection import train_test_split
  2. from sklearn.feature_selection import SelectFromModel
  3. from sklearn.linear_model import LogisticRegression
  4. from sklearn.preprocessing import StandardScaler
  5. from sklearn.svm import SVC
  6. from sklearn.metrics import accuracy_score
  7. import pandas as pd
  8. #加载数据集
  9. url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/undocumented/connectionist-bench/sonar/sonar.all-data'
  10. data = pd.read_csv(url, header=None)
  11. #数据预处理
  12. x = data.iloc[:, 0:-1].values
  13. y = data.iloc[:, -1].values
  14. #划分训练集和测试集
  15. x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=42)
  16. #L1正则化的logistic回归模型进行嵌入法特征选择
  17. #logistic分类模型:正则参数C控制正则效果的大小,C越大,正则效果越弱
  18. logistic_model=LogisticRegression(penalty='l1',C=0.5,solver='liblinear',random_state=1234)
  19. #嵌入式特征选择模型,选择前20个特征
  20. selector=SelectFromModel(estimator=logistic_model,max_features=20)
  21. selector.fit(x_train,y_train)
  22. x_train_selected = selector.fit_transform(x_train, y_train)
  23. x_test_selected = selector.transform(x_test)
  24. #特征选择结果
  25. print("L1正则嵌入法选择的特征:",selector.get_support(True))
  26. print("L1正则化Logistic回归模型获得的测试精度",
  27.       selector.estimator_.score(x_test,y_test))
  28. 使用支持向量机建立分类模型并比较
  29. # 原始数据的SVM分类
  30. svm_model = SVC()
  31. svm_model.fit(x_train, y_train)
  32. y_pred = svm_model.predict(x_test)
  33. print("原特征分类准确率:", accuracy_score(y_test, y_pred))
  34. # 特征选择后的SVM分类
  35. svm_model_selected = SVC()
  36. svm_model_selected.fit(x_train_selected, y_train)
  37. y_pred_selected = svm_model_selected.predict(x_test_selected)
  38. print("特征选择后分类准确率:", accuracy_score(y_test, y_pred_selected))
复制代码

 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4