11-4 scikit-leran中的SVM

和KNN一样,使用SVM之前要做数据标准化处理,因为SVM算法涉及距离。 尺度不平衡的例子: 数据标准化之后:

准备数据

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()

数据标准化

训练hard SVN模型

分类效果

训练soft SVN 模型

图中有一个点被错误地分类了,这是soft的效果

绘制margin

输入:svc.coef_ 输出:array([[ 4.03240038, -2.50701084]]) 样本中有两个特征,所以有2个系数,每个特征对应一个 输出是一个二维数组,因为sklearn提供的SVM算法可以处理多分类问题

输入:svc.intercept_ 输出:array([0.92736326])

svc的margin

svc2的margin

Note 1:sklarn提供的SVM算法支持多分类,默认使用ovr算法 Note 2:sklarn提供的SVM算法支持正则化,默认使用L2范式

Last updated