使用支持向量的监督学习

Machine LearningMachine LearningBeginner
立即练习

This tutorial is from open-source community. Access the source code

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本教程中,我们将学习支持向量机(Support Vector Machines,SVM),它是一组用于分类、回归和异常检测的监督学习方法。SVM 在高维空间中很有效,并且当维度数量大于样本数量时仍能表现良好。

SVM 的优点包括在高维空间中的有效性、内存效率以及在不同核函数方面的通用性。然而,重要的是要避免过拟合,并为给定问题选择正确的核函数和正则化项。

在本教程中,我们将涵盖以下主题:

  1. 使用 SVM 进行分类
  2. 多类分类
  3. 分数和概率
  4. 不平衡问题
  5. 使用 SVM 进行回归
  6. 密度估计和新奇性检测

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.]])

多类分类

  • SVCNuSVC 分类器可使用“一对多”方法用于多类分类:
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)及其在分类、回归、密度估计和异常检测中的应用。我们涵盖了分类、多类分类、分数和概率、不平衡问题、回归以及密度估计的步骤。支持向量机是机器学习的强大工具,可用于各种场景以实现准确的预测。