一、基础理解
- Hard Margin SVM 和 Soft Margin SVM 都是解决线性分类问题,无论是线性可分的问题,还是线性不可分的问题;
- 和 kNN 算法一样,使用 SVM 算法前,要对数据做标准化处理;
- 原因:SVM 算法中设计到计算 Margin 距离,如果数据点在不同的维度上的量纲不同,会使得距离的计算有问题;
- 例如:样本的两种特征,如果相差太大,使用 SVM 经过计算得到的决策边界几乎为一条水平的直线——因为两种特征的数据量纲相差太大,水平方向的距离可以忽略,因此,得到的最大的 Margin 就是两条虚线的垂直距离;
- 只有不同特征的数据的量纲一样时,得到的决策边界才没有问题;
二、例
1)导入并绘制数据集
-
import numpy as np import matplotlib.pyplot as plt from sklearn import datasets iris = datasets.load_iris() X = iris.data y = iris.target X = X[y<2, :2] y = y[y<2] plt.scatter(X[y==0, 0], X[y==0, 1], color='red') plt.scatter(X[y==1, 0], X[y==1, 1], color='blue') plt.show()
2)LinearSVC(线性 SVM 算法)
- LinearSVC:该算法使用了支撑向量机的思想;
- 数据标准化
from sklearn.preprocessing import StandardScaler standard