sklearn.svm.LinearSVC与sklearn.svm.SVC区别

1.LinearSVC与SVC的区别
LinearSVC

  • 基于liblinear库实现
  • 有多种惩罚参数和损失函数可供选择
  • 训练集实例数量大(大于1万)时也可以很好地进行归一化
  • 既支持稠密输入矩阵也支持稀疏输入矩阵
  • 多分类问题采用one-vs-rest方法实现

SVC

  • 基于libsvm库实现
  • 训练时间复杂度为 [公式]
  • 训练集实例数量大(大于1万)时很难进行归一化
  • 多分类问题采用one-vs-rest方法实现

2.LinearSVC详细说明
LinearSVC实现了线性分类支持向量机,它是给根据liblinear实现的,可以用于二类分类,也可以用于多类分类。其原型为:class Sklearn.svm.LinearSVC(penalty=’l2’, loss=’squared_hinge’, dual=True, tol=0.0001, C=1.0, multi_class=’ovr’, fit_intercept=True, intercept_scaling=1, class_weight=None, verbose=0, random_state=None, max_iter=1000)

初始化参数

  • C:一个浮点数,惩罚参数

  • loss:字符串。表示损失函数。可取值为

  • ’hinge’:合页损失函数;

  • ’squared_hinge’:合页损失函数的平方

  • penalty:字符串。可取值为’l1’和’l2’分别对应1范数和2范数

  • dual:布尔值。如果为true,则求解对偶问题。如果为false,解决原始问题。当样本数量>特征数量时,倾向采用解原始问题

  • tol:浮点数,指定终止迭代的阈值

  • multi_class: 字符串,指定多分类问题的策略

  • ’ovr’: 采用one-vs-rest分类策略;

  • ’crammer_singer’: 多类联合分类,很少用。因为它的计算量大,而且精度不会更佳,此时忽略loss,penalty,dual参数

  • fit_intercept: 布尔值。如果为true,则计算截距,即决策函数中的常数项;否则忽略截距

  • intercept_scaling: 浮点值。如果提供了,则实例X变成向量[X,intercept_scaling]。此时相当于添加了一个人工特征,该特征对所有实例都是常数值

  • class_weight: 可以是个字典,或者字符串’balanced’。指定各个类的权重,若未提供,则认为类的权重为1
    · 如果是字典,则指定每个类标签的权重;
    · 如果是’balanced’,则每个类的权重是它出现频率的倒数

  • verbose: 一个整数,表示是否开启verbose输出

  • random_state: 一个整数或者一个RandomState实例,或者None
    · 如果为整数,则它指定随机数生成器的种子
    · 如果为RandomState实例,则指定随机数生成器
    · 如果为None,则使用默认的随机数生成器

  • max_iter:一个整数,指定最大的迭代次数

属性

  • coef_: 一个数组,它给出了各个特征的权重
  • intercept_:一个数组,它给出了截距,即决策函数中的常数项

方法

  • fix(X,y): 训练模型
  • predict(X): 用模型进行预测,返回预测值
  • score(X,y[, sample_weight]):返回在(X, y)上预测的准确率

你可能感兴趣的:(sklearn.svm.LinearSVC与sklearn.svm.SVC区别)