大家好!今天我们来聊聊机器学习中的一个经典算法——支持向量机(Support Vector Machine,简称SVM)。我们以只从两个重点方面来进行了解:
什么是支持向量机? 为什么要使用它呢?
什么是支持向量机?
想象一下,假如你有一些数据点分布在二维平面上,这些点属于两个不同的类别。现在的任务是找到一条直线(在更高维度空间中可能是一个超平面),能够最好地区分这两个类别。这条直线就是我们要找的支持向量机。简单来说,SVM就是寻找最优的分割线,使得两类数据之间的间隔最大化。
为什么使用支持向量机?它的优点是什么?
- 分类效果好:SVM在很多情况下都能提供很好的分类效果。
- 适用于高维空间:它不仅适用于二维或三维数据,还能处理更高维度的数据。
- 理论基础扎实:SVM有坚实的数学基础,基于统计学习理论。
- 防止过拟合:通过最大化间隔,SVM有助于减少过拟合的风险。
Python代码示例
使用著名的Iris花卉数据集进行测试。
老规矩检查自己的环境,不知道了的先顺便看看我之前的文章:numpy环境安装
windows 使用 pip install 要安装的库
# 导入必要的库
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score# 加载数据
iris = datasets.load_iris()
X = iris.data
y = iris.target# 因为Iris数据集有三个类别,这里我们只取前两类进行二分类问题演示
X = X[y != 2]
y = y[y != 2]# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)# 创建SVM模型
svm = SVC(kernel='linear', random_state=42)# 训练模型
svm.fit(X_train, y_train)# 进行预测
predictions = svm.predict(X_test)# 计算准确率
accuracy = accuracy_score(y_test, predictions)
print(f"模型的准确率为: {accuracy*100:.2f}%")
代码解析说明:
- 首先从
sklearn
库中导入所需的模块。 - 然后加载Iris数据集并选取前两个类别的数据来进行二分类任务。
- 接着,我们划分了训练集和测试集,创建了一个线性核的支持向量机模型,并用训练数据对其进行训练。
- 最后,我们用测试数据来评估模型的表现,并打印出准确率。
总结
支持向量机是一种强大而灵活的工具,适用于各种类型的数据分析任务。无论是分类还是回归问题,甚至是特征选择,它都能提供很好的性能。如果对大家有帮助的话,三联一下下吧!