在机器学习中,特征选择是一个非常重要的步骤,特别是在处理高维数据集时。通过特征选择,我们可以移除冗余或者不重要的特征,从而提高模型的性能和训练效率。下面就是对声呐数据集进行特征选择,并使用支持向量机(SVM)构建分类模型,最后比较特征选择前后的模型性能变化。
1. 数据集简介
UCI声呐数据集记录了使用声呐探测物体的208条数据,目标是对物体分类为矿物(Mine)或岩石(Rock)。每条数据包含60个特征,表示从不同角度捕获的声呐信号的强度,目标标签为两类(M表示矿物,R表示岩石)。
2. 数据加载和预处理
首先,我们需要加载数据并进行预处理。声呐数据集不包含缺失值,因此我们主要关注如何将类别标签转化为二进制值(M -> 1,R -> 0)。在机器学习中,通常会将数据集划分为训练集和测试集,这样可以用测试集评估模型的泛化性能。
import pandas as pd
from sklearn.model_selection import train_test_split
# 1. 加载数据
url = "sonar.all-data.csv"
data = pd.read_csv(url, header=None)
# 2. 划分数据和标签
X = data.iloc[:, :-1]
y = data.iloc[:, -1].apply(lambda x: 1 if x == 'M' else 0) # 将标签转换为二进制
# 3. 数据划分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_spli