目录
拟合类别之间可能的、最宽的“街道”。简而言之,它的目的是使决策边界之间的间隔最大化,从而分隔出两个类别的训练实例。
位于“街道”之上的实例被称为支持向量,也包括处于边界上的实例。
如果训练集不经缩放,SVM将趋于忽略值较小的特征。
这个问题仅适用于线性支持向量机,因为核SVM只能使用对偶问题。
(gamma)? 那么C ?这可能是由于过度正则化导致的,因此我们可以提升 gamma 或 C 来降低正则化。
在一个线性可分离数据集上训练LinearSVC,然后在同一数据集上训练 SVC 和 SGDClassifier 。看看是否可以用它们产生出大致相同的模型。
这里我们使用鸢尾花数据集,因为Iris Setosa和Iris Versicolor类是线性可分离的。
下面是代码实现:
-
- import numpy as np
- from sklearn import datasets
- from sklearn.svm import SVC, LinearSVC
- from sklearn.linear_model import SGDClassifier
- from sklearn.preprocessing import StandardScaler
-
-
- #加载数据
- iris = datasets.load_iris()
- X = iris["data"][:, (2, 3)] # 花瓣长度和宽度
- y = iris["target"]
-
- setosa_or_versicolor = (y == 0) | (y == 1)
- X = X[setosa_or_versicolor]
- y = y[setosa_or_versicolor]
-
- #训练
-
- C = 5
- alpha = 1 / (C * len(X))
-
- lin_clf = LinearSVC(loss="hinge", C=C, random_state=42)
- svm_clf = SVC(k