简介
在本教程中,我们将学习支持向量机(Support Vector Machines,SVM),它是一组用于分类、回归和异常检测的监督学习方法。SVM 在高维空间中很有效,并且当维度数量大于样本数量时仍能表现良好。
SVM 的优点包括在高维空间中的有效性、内存效率以及在不同核函数方面的通用性。然而,重要的是要避免过拟合,并为给定问题选择正确的核函数和正则化项。
在本教程中,我们将涵盖以下主题:
- 使用 SVM 进行分类
- 多类分类
- 分数和概率
- 不平衡问题
- 使用 SVM 进行回归
- 密度估计和新奇性检测
VM 提示
VM 启动完成后,点击左上角切换到“笔记本”(Notebook)标签,以访问 Jupyter Notebook 进行练习。
有时,你可能需要等待几秒钟让 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。
如果你在学习过程中遇到问题,请随时向 Labby 提问。课程结束后提供反馈,我们将立即为你解决问题。
这是一个实验(Guided Lab),提供逐步指导来帮助你学习和实践。请仔细按照说明完成每个步骤,获得实际操作经验。根据历史数据,这是一个 初级 级别的实验,完成率为 88%。获得了学习者 67% 的好评率。
使用支持向量机进行分类
- 首先导入必要的库:
from sklearn import svm
- 定义训练样本
X和类别标签y:
X = [[0, 0], [1, 1]]
y = [0, 1]
- 创建
SVC分类器的实例并拟合数据:
clf = svm.SVC()
clf.fit(X, y)
- 使用训练好的模型预测新值:
clf.predict([[2., 2.]])
多类分类
SVC和NuSVC分类器可使用“一对多”方法用于多类分类:
X = [[0], [1], [2], [3]]
Y = [0, 1, 2, 3]
clf = svm.SVC(decision_function_shape='ovo')
clf.fit(X, Y)
dec = clf.decision_function([[1]])
分数和概率
- 支持向量机(SVM)并不直接提供概率估计,但你可以通过将
probability参数设置为True来启用概率估计:
clf = svm.SVC(probability=True)
clf.fit(X, y)
- 然后你可以使用
predict_proba方法来获取每个类别的概率:
clf.predict_proba([[2., 2.]])
- 请注意,概率估计计算成本较高且需要进行交叉验证,所以要谨慎使用。
不平衡问题
- 支持向量机(SVM)可以通过调整
class_weight参数来处理不平衡问题:
clf = svm.SVC(class_weight={1: 10})
clf.fit(X, y)
使用支持向量机进行回归
- 对于回归问题,可以使用
SVR类来使用支持向量机:
X = [[0, 0], [1, 1]]
y = [0.5, 2.5]
regr = svm.SVR()
regr.fit(X, y)
regr.predict([[1, 1]])
密度估计与异常检测
- 支持向量机(SVM)还可通过
OneClassSVM类用于密度估计和异常检测:
clf = svm.OneClassSVM()
clf.fit(X)
clf.predict(X)
总结
在本教程中,我们学习了支持向量机(Support Vector Machines,SVM)及其在分类、回归、密度估计和异常检测中的应用。我们涵盖了分类、多类分类、分数和概率、不平衡问题、回归以及密度估计的步骤。支持向量机是机器学习的强大工具,可用于各种场景以实现准确的预测。