sklearn-SVC实现与类参数详解

作者:TiRan_Yang 时间:2023-09-04 18:10:43 

sklearn-SVC实现与类参数

对应的API:http://scikit-learn.sourceforge.net/stable/modules/generated/sklearn.svm.SVC.html

它是基于libsvm实现的。随着样本数量的增加,拟合时间的复杂度要高于二次,这就使得当样板数量超过一万个时,很难扩展到数据集中。

在多类处理时,是按照1对1的方案进行处理的。

函数的的定义为:


def __init__ (self, C=1.0, kernel='rbf', degree=3, gamma='auto',coef0=0.0,
verbose=False, max_iter=-1, decision_function_shape='ovr', random_state=None):

参数的含义:

- C:float参数 默认值为1.0。错误项的惩罚系数。C越大,即对分错样本的惩罚程度越大,因此在训练样本中准确率越高,但是泛化能力降低,也就是对测试数据的分类准确率降低。相反,减小C的话,容许训练样本中有一些误分类错误样本,泛化能力强。对于训练样本带有噪声的情况,一般采用后者,把训练样本集中错误分类的样本作为噪声。

- kernel: str参数 默认为‘rbf‘,算法中采用的核函数类型,可选参数有:

linear:线性核函数

poly:多项式核函数

rbf:径像核函数/高斯核

sigmod:sigmod核函数

precomputed:核矩阵

- degree :int型参数 (default=3),这个参数只对多项式核函数(poly)有用,是指多项式核函数的阶数n,如果给的核函数参数是其他核函数,则会自动忽略该参数。

- gamma:float参数,默认为auto核函数系数,只对'rbf'、 ‘poly' 、 ‘sigmoid'有效。

如果gamma为auto,代表其值为样本特征数的倒数,即1/n_features。

- coef0:float参数 默认为0.0

核函数中的独立项,只有对‘poly'和‘sigmod'核函数有用,是指其中的参数c

- probability:bool参数 默认为False

是否启用概率估计。 这必须在调用fit()之前启用,并且会fit()方法速度变慢。

- shrinking:bool参数 默认为True

是否采用启发式收缩方式。

- tol: float参数 默认为1e^-3

svm停止训练的误差精度。

- cache_size:float参数 默认为200

指定训练所需要的内存,以MB为单位,默认为200MB。 - class_weight:字典类型或者‘balance'字符串。默认为None

给每个类别分别设置不同的惩罚参数C,则该类别的惩罚系数为class_weight[i]*C,如果没有给,则会给所有类别都给C=1,即前面参数指出的参数C。

如果给定参数‘balance',则使用y的值自动调整与输入数据中的类频率成反比的权重。

- verbose :bool参数 默认为False

是否启用详细输出。 此设置利用libsvm中的每个进程运行时设置,如果启用,可能无法在多线程上下文中正常工作。一般情况都设为False,不用管它。

- max_iter :int参数 默认为-1

最大迭代次数,如果为-1,表示不限制

- random_state:int型参数 默认为None

伪随机数发生器的种子,在混洗数据时用于概率估计。

SVC的方法

1、fit()方法:用于训练SVM,具体参数已经在定义SVC对象的时候给出了,这时候只需要给出数据集X和X对应的标签y即可。

2、predict()方法:基于以上的训练,对预测样本T进行类别预测,因此只需要接收一个测试集T,该函数返回一个数组表示个测试样本的类别。

3、predict_proba():返回每个输入类别的概率,这与predict方法不同,predict方法返回的输入样本属于那个类别,但没有概率。使用此方法时,需要在初始化时,将 probability参数设置为True。

例如:


import numpy as np
import matplotlib.pyplot as plt
from sklearn import svm
# we create 40 separable points
np.random.seed(0)
X = np.r_[np.random.randn(20, 2) - [2, 2], np.random.randn(20, 2) + [2, 2]]
Y = [0] * 20 + [1] * 20
# fit the model
clf = svm.SVC(kernel='linear',probability=True)
clf.fit(X, Y)
print(clf.predict_proba([[-0.1,0.7],[0.3,0.5]]))
#result
#[[ 0.41844015 0.58155985]
#[ 0.34810738 0.65189262]]

如果初始化时不适用probability参数:


clf = svm.SVC(kernel='linear')
clf.fit(X, Y)
print(clf.predict([[-0.1,0.7],[0.3,0.5]]))
# get the separating hyperplane
w = clf.coef_[0]
#输出的结果为:[1,1]

属性有哪些:

svc.n_support_:各类各有多少个支持向量

svc.support_:各类的支持向量在训练样本中的索引

svc.support_vectors_:各类所有的支持向量

来源:https://blog.csdn.net/lovelyaiq/article/details/78611190

标签:sklearn,SVC,参数
0
投稿

猜你喜欢

  • 利用Python/R语言分别解决金字塔数求和问题

    2021-09-06 06:29:14
  • javascript 版 Bad Apple 字符动画

    2010-01-28 12:19:00
  • vue全局自定义指令-元素拖拽的实现代码

    2024-04-30 08:46:16
  • 简单了解pytest测试框架setup和tearDown

    2022-09-12 07:26:56
  • mysql存储过程实例

    2024-01-20 09:09:02
  • 让XML在ASP中发挥其长处

    2008-01-16 19:07:00
  • Python Pandas中缺失值NaN的判断,删除及替换

    2021-08-27 22:10:23
  • 详解MySql中InnoDB存储引擎中的各种锁

    2024-01-13 10:40:32
  • JS+ASP实现无刷新新闻列表方法

    2007-08-22 12:44:00
  • C#中把FastReport.Net报表控件的数据保存到数据库

    2024-01-20 12:07:18
  • Jquery 组合form元素为json格式,asp.net反序列化

    2024-05-21 10:11:56
  • Python drop()删除行列的操作方法

    2022-10-27 17:12:41
  • python 基于空间相似度的K-means轨迹聚类的实现

    2022-10-24 07:29:02
  • mysql用户创建与授权的简单实例

    2024-01-18 00:20:18
  • JavaScript基本语法_动力节点Java学院整理

    2024-04-18 09:49:41
  • 特别推荐:Web开发常用速查手册大全(100+)

    2011-05-06 12:44:00
  • go gin 正确读取http response body内容并多次使用详解

    2024-04-25 15:06:34
  • Python标准库之typing的用法(类型标注)

    2021-09-27 01:25:24
  • MyBatis SQL xml处理小于号与大于号正确的格式

    2024-01-20 03:32:57
  • 最好的Python DateTime 库之 Pendulum 长篇解析

    2023-03-12 18:40:42
  • asp之家 网络编程 m.aspxhome.com