svm_SVC

SVM算法

概要:SVM算法(support vector machine,支持向量机),是一种二分类算法。

  • 支持向量:分离两个类的支持或支持平面上的超平面的向量点
  • 机器:一种算法

SVM模型的种类

  • svm.LinearSVC Linear Support Vector Classification.
  • svm.LinearSVR Linear Support Vector Regression.
  • svm.NuSVC Nu-Support Vector Classification.
  • svm.NuSVR Nu Support Vector Regression.
  • svm.OneClassSVM Unsupervised Outlier Detection.
  • svm.SVC C-Support Vector Classification.
  • svm.SVR Epsilon-Support Vector Regression.

可以很容易地解释为三者之间的关系

  • SVM=Support Vector Machine 是支持向量
  • SVC=Support Vector Classification就是支持向量机用于分类,
  • SVR=Support Vector Regression.就是支持向量机用于回归分析

语言:python

领域:机器学习

支持向量机之SVC算法(svm.SVC)

svm.SVC:C-Support Vector Classification即svm用于分类

sklearn.svm.SVC(
	C=1.0, 
	kernel='rbf', 
	degree=3, 
	gamma='auto', 
	coef0=0.0, 
	shrinking=True, 
	probability=False, 
	tol=0.001, 
	cache_size=200, 
	class_weight=None, 
	verbose=False, 
	max_iter=-1, 
	decision_function_shape=None,
	random_state=None
	)

范围:

关键参数:

  • C:float类型,默认值是1.0
    参数表明算法要训练数据点需要作出多少调整适应,C小,SVM对数据点调整少,多半取平均,仅用少量的数据点和可用变量,C值增大,会使学习过程遵循大部分的可用训练数据点并牵涉较多变量。C值过大,有过拟合问题,C值过小,预测粗糙,不准确。
  • kernel:str类型,默认是rbf,核函数,可选参数有
  • linear:线性核函数
    svm_SVC
  • poly:多项式核函数
    svm_SVC
  • rbf:径像核函数/高斯核
    svm_SVC
  • sigmoid:sigmoid核函数(实现多层神经网络)
    svm_SVC
  • precomputed:核矩阵表示自己提前计算好核函数矩阵,这时候算法内部就不再用核函数去计算核矩阵,而是直接用你给的核矩阵。
  • degree:int 类型,默认为3
    多项式poly函数的阶数n,选择其他核函数时会被忽略。
  • gamma:float 类型,默认为auto代表其值为样本特征数的倒数,即1/n_features
    核函数系数,只对rbf,poly,sigmod有效。
  • coef0:float 类型,默认为0.0
    核函数的常数项,对于poly和 sigmoid代表其中的参数c

其他参数:

  • probability:bool类型,默认为False
    是否采用概率估计,需要在训练fit()模型时加上这个参数,之后才能用相关的方法:predict_proba和predict_log_proba
  • shrinking:bool类型,默认为True
    是否采用shrinking heuristic()启发式收缩方式
  • tol:float类型,默认为1e-3
    svm停止训练的误差值大小
  • cache_size:float类型,默认为200(MB)
    指定训练所需要的内存,以MB为单位
  • class_weight:字典类型或’balance’字符串,默认为None
    类别的权重,字典形式传递。设置第几类的参数C为weight*C(C-SVC中的C)
  • verbose:bool类型,默认为False
    是否启用详细输出。 此设置利用libsvm中的每个进程运行时设置,如果启用,可能无法在多线程上下文中正常工作。一般情况都设为False,不用管它。
  • max_iter:int类型, 默认为-1
    最大迭代次数。-1为无限制。
  • decision_function_shape:str类型,默认为’ovr’
    ovo’, ‘ovr’, default=’ovr’,是否将形状(n_samples,n_classes)的one-rest-rest(‘ovr’)决策函数作为所有其他分类器返回,或者返回具有形状的libsvm的原始one-vs-one(‘ovo’)决策函数(n_samples) ,n_classes *(n_classes – 1)/ 2)。
    通俗解释:ovr即为one v rest 一个类别分别与其他类别进行划分,ovo为one v one,类别两两之间划分,用二分类的方法模拟多分类的结果
  • random_state:int类型,默认为None
    混洗数据时用于概率估计的伪随机数生成器的种子。

SVM预测模型的通用步骤

  • 选择使用的SVM类
  • 用数据训练模型
  • 检查验证错误并用作基线
  • 为SVM参数尝试不同的值
  • 检查验证错误是否有所改善
  • 使用具有最优参数的数据再次训练模型

示例代码

from sklearn.svm import SVC
import numpy as np
X = np.array([[-1, -1], [-2, -1], [1, 1], [2, 1]])  # 特征样本
y = np.array([1, 1, 2, 2])  # 分类标记
clf = SVC(kernel='sigmoid')  # 线性核函数
clf.fit(X, y)  # 训练模型,自动分类

print(clf.fit(X, y))  # svc训练函数参数
print(clf.predict([[-0.8, -1]]))  # 测试,新样本分类
print(clf.support_vectors_)  # 支持向量点 
print(clf.support_)  # 支持向量点的索引 
print(clf.n_support_)  # 每个class有几个支持向量点 

10重交叉验证

start = time.time()
clf = svm.SVC(kernel='sigmoid')
scores = cross_val_score(clf, X, Y, cv=10, scoring='accuracy')
print '用时%f 秒!' % (time.time() - start)
print 'svm10重交叉验证评分:', scores
print 'svm10重交叉验证平均分:', scores.mean()

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
扎眼的阳光的头像扎眼的阳光普通用户
上一篇 2022年4月7日
下一篇 2022年4月7日

相关推荐