当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python sklearn LinearSVC用法及代码示例


本文简要介绍python语言中 sklearn.svm.LinearSVC 的用法。

用法:

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)

线性支持向量分类。

与参数 kernel='linear' 的 SVC 类似,但根据 liblinear 而不是 libsvm 实现,因此它在选择惩罚和损失函数方掩码有更大的灵活性,并且应该更好地扩展到大量样本。

此类支持密集和稀疏输入,并且多类支持根据one-vs-the-rest 方案处理。

在用户指南中阅读更多信息。

参数

penalty{‘l1’, ‘l2’},默认='l2'

指定惩罚中使用的规范。 ‘l2’ 惩罚是 SVC 中使用的标准。 ‘l1’ 导致稀疏的 coef_ 向量。

loss{‘hinge’, ‘squared_hinge’},默认='squared_hinge'

指定损失函数。 ‘hinge’ 是标准 SVM 损失(例如由 SVC 类使用),而 ‘squared_hinge’ 是铰链损失的平方。不支持penalty='l1'loss='hinge' 的组合。

dual布尔,默认=真

选择算法来解决对偶或原始优化问题。当 n_samples > n_features 时首选 dual=False。

tol浮点数,默认=1e-4

停止标准的公差。

C浮点数,默认=1.0

正则化参数。正则化的强度与 C 成反比。必须严格为正。

multi_class{‘ovr’, ‘crammer_singer’},默认='ovr'

如果 y 包含两个以上类,则确定多类策略。 "ovr" 训练 n_classes one-vs-rest 分类器,而 "crammer_singer" 优化所有类的联合目标。虽然crammer_singer 从理论角度来看很有趣,因为它是一致的,但在实践中很少使用它,因为它很少会带来更好的准确性并且计算成本更高。如果选择"crammer_singer",则选项loss、penalty和dual将被忽略。

fit_intercept布尔,默认=真

是否计算此模型的截距。如果设置为 false,则不会在计算中使用截距(即数据预计已经居中)。

intercept_scaling浮点数,默认=1

当 self.fit_intercept 为 True 时,实例向量 x 变为 [x, self.intercept_scaling] ,即将具有等于 intercept_scaling 的常数值的 “synthetic” 特征附加到实例向量。截距变为intercept_scaling * 合成特征权重 注意!合成特征权重像所有其他特征一样受到 l1/l2 正则化。为了减少正则化对合成特征权重(以及因此对截距)的影响,必须增加intercept_scaling。

class_weightdict或‘balanced’,默认=无

对于 SVC,将第 i 类的参数 C 设置为class_weight[i]*C。如果没有给出,所有的类都应该有一个权重。 “balanced” 模式使用 y 的值自动调整与输入数据中的类频率成反比的权重,如 n_samples / (n_classes * np.bincount(y))

verbose整数,默认=0

启用详细输出。请注意,此设置利用了 liblinear 中的 per-process 运行时设置,如果启用,该设置可能无法在多线程上下文中正常工作。

random_stateint、RandomState 实例或无,默认=无

控制伪随机数生成,以混洗双坐标下降的数据(如果 dual=True )。当dual=False时,LinearSVC的底层实现不是随机的,并且random_state对结果没有影响。传递 int 以在多个函数调用之间实现可重现的输出。请参阅术语表。

max_iter整数,默认=1000

要运行的最大迭代次数。

属性

coef_ndarray of shape (1, n_features) if n_classes == 2 else (n_classes, n_features)

分配给特征的权重(原始问题中的系数)。

coef_ 是从 raw_coef_ 派生的只读属性,它遵循 liblinear 的内部存储器布局。

intercept_ndarray 形状 (1,) if n_classes == 2 else (n_classes,)

决策函数中的常数。

classes_ndarray 形状 (n_classes,)

唯一的类标签。

n_features_in_int

拟合期间看到的特征数。

feature_names_in_ndarray 形状(n_features_in_,)

拟合期间看到的特征名称。仅当 X 具有全为字符串的函数名称时才定义。

n_iter_int

在所有类中运行的最大迭代次数。

注意

底层 C 实现使用随机数生成器在拟合模型时选择特征。因此,对于相同的输入数据,结果略有不同的情况并不少见。如果发生这种情况,请尝试使用较小的 tol 参数。

底层实现,liblinear,对将导致内存复制的数据使用稀疏的内部表示。

在某些情况下,预测输出可能与独立 liblinear 的输出不匹配。请参阅叙述文档中与 liblinear 的区别。

参考

LIBLINEAR:大型线性分类库

例子

>>> from sklearn.svm import LinearSVC
>>> from sklearn.pipeline import make_pipeline
>>> from sklearn.preprocessing import StandardScaler
>>> from sklearn.datasets import make_classification
>>> X, y = make_classification(n_features=4, random_state=0)
>>> clf = make_pipeline(StandardScaler(),
...                     LinearSVC(random_state=0, tol=1e-5))
>>> clf.fit(X, y)
Pipeline(steps=[('standardscaler', StandardScaler()),
                ('linearsvc', LinearSVC(random_state=0, tol=1e-05))])
>>> print(clf.named_steps['linearsvc'].coef_)
[[0.141...   0.526... 0.679... 0.493...]]
>>> print(clf.named_steps['linearsvc'].intercept_)
[0.1693...]
>>> print(clf.predict([[0, 0, 0, 0]]))
[1]

相关用法


注:本文由纯净天空筛选整理自scikit-learn.org大神的英文原创作品 sklearn.svm.LinearSVC。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。