支持向量分类器的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的博客,原文内容也很简单,翻译加了一点点解释说明。原文地址
相关文章推荐
- 找到SVM分类器的支持向量(scikit-learn)
- 支持向量机与支持向量回归(support vector machine and support vector regression)
- scikit-learn学习1.4. 支持向量机(Support Vector Machines)
- scikit-learn学习笔记:1.4 支持向量机(Support Vector Machines)
- 林轩田--机器学习技法--SVM笔记6--支持向量回归(Support+Vector+Regression)
- SVDD(Support Vector Domain Description) 支持向量数据域描述(1)
- 【理论】支持向量机2: Support Vector —— 介绍支持向量机目标函数的 dual 优化推导,并得出“支持向量”的概念
- scikit-learn 1.4. Support Vector Machines
- 用scikit-learn实现朴素贝叶斯分类器 转
- scikit-learn(工程中用的相对较多的模型介绍):1.4. Support Vector Machines
- paper 5:支持向量机系列二: Support Vector —— 介绍支持向量机目标函数的 dual 优化推导,并得出“支持向量”的概念。
- SVDD(Support Vector Domain Description) 支持向量数据域描述(2)
- SVM支持向量分类器原理及OpenCV实现
- 支持向量機器 (Support Vector Machine)
- scikit-learn官网文档翻译 1.4 Support Vector Machines
- 学习SVM(四) 理解SVM中的支持向量(Support Vector)
- SVM分类器的概率校准在scikit-learn 中的几种实现方式
- 利用scikit-learn下的knn实现kaggle的手写数字识别问题
- 1.2 KNN算法学习——使用scikit-learn中的KNN模型实现
- 自定义实现向量图标动画VectorDrawable