您的位置:首页 > 其它

支持向量分类器的scikit-learn 实现(Support Vector Classifier)

2018-02-17 18:00 435 查看


支持向量分类器(SVC)在最大化分类间隔(margin)和最小化错误分类(misclassification)上需要一个平衡。

在SVC分类器中,用超参数C作为误差的惩罚项

C比较小时,可以接受一些数据点的误分类,模型的偏差高而方差低(high bias low variance)

C比较大时,对错误分类的点惩罚严重,分类器会尽力避免错误的分类,得到的模型偏差小但方差高(low bias high variance)

在scikit-learn中,C由参数 c 决定,默认取值 c = 1.0

C作为算法的超参数,在我们进行模型选择时,需要对其进行调整选择

0.准备工作

# 导入库
from sklearn.svm import LinearSVC
from sklearn import datasets
from sklearn.preprocessing import StandardScaler
import numpy as np


1.加载数据集Iris Flower

# 加载特征和标签数据
iris = datasets.load_iris()
X = iris.data
y = iris.target


#Iris数据集共150组数据,每组数据包括四个特征值,y包含三种类别,用0,1,2 表示
X.shape


(150, 4)


X[1:5,:]


array([[4.9, 3. , 1.4, 0.2],
[4.7, 3.2, 1.3, 0.2],
[4.6, 3.1, 1.5, 0.2],
[5. , 3.6, 1.4, 0.2]])


y


array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2])


2.特征标准化

# 特征取值标准化
scaler = StandardScaler()
X_std = scaler.fit_transform(X)
X_std[1:5,:]


array([[-1.14301691, -0.1249576 , -1.3412724 , -1.31297673],
[-1.38535265,  0.33784833, -1.39813811, -1.31297673],
[-1.50652052,  0.10644536, -1.2844067 , -1.31297673],
[-1.02184904,  1.26346019, -1.3412724 , -1.31297673]])


3.训练支持向量分类器

# 创建支持向量分类器(SVC)
svc = LinearSVC(C=1.0)

# 训练模型
model = svc.fit(X_std, y)


4.创造新的观察数据

# 创建新的数据
new_observation_1 = [[-0.7, 1.1, -1.1 , -1.7]]
new_observation_2 = [[0.7, 1.1, 1.2 , -1.5]]


5.预测观察数据的分类结果

#预测数据集内的结果
svc.predict([X[140]])


array([2])


# 预测新数据的分类结果
svc.predict(new_observation_1)


array([0])


svc.predict(new_observation_2)


array([1])


5.说明

翻译自Chris Albon的博客,原文内容也很简单,翻译加了一点点解释说明。

原文地址
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息