学习SVM中碰到的函数

2024-06-18 14:18
文章标签 函数 学习 碰到 svm

本文主要是介绍学习SVM中碰到的函数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

学习svm的时候,看了几个大牛的代码,代码中调了几个函数库,在此记录下来,方便以后的学习。

一、sklearn.svm.SVC

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:惩罚参数,默认值是1.0
    C越大,表示对误分类的惩罚变大,算法更想将训练集全分对,这样对训练集测试时准确率很高,可能会过拟合,泛化能力弱;C越小,表示对误分类的惩罚变小,允许容错,可能会欠拟合,泛化能力强。
  • kernel:核函数,默认是rbf
    ‘linear’:线性
    ‘poly’:多项式
    ‘sigmoid’:
    ‘precomputed’:
    ‘rbf’:像正太分布,但是和正太分布没什么关系
  • gamma : ‘rbf’、‘poly’ 和‘sigmoid’的核函数参数。默认是’auto’,则会选择1/n_features。
  • coef0 :核函数的常数项。对于‘poly’和 ‘sigmoid’有用。
  • shrinking :是否采用shrinking heuristic方法,默认为true
  • probability :是否采用概率估计?.默认为False
  • tol :停止训练的误差值大小,默认为1e-3
  • cache_size :核函数cache缓存大小,默认为200
  • class_weight :类别的权重,字典形式传递。设置第几类的参数C为weight*C(C-SVC中的C)
  • verbose :允许冗余输出?
  • max_iter :最大迭代次数。-1为无限制。
  • decision_function_shape :‘ovo’, ‘ovr’ or None, default=None3
  • random_state :数据洗牌时的种子值,int值

上面的值中用的最多的有:C、kernel、degree、gramma、coef0。

二、sklearn: predict和predict_proba

这里用一段代码展示效果:

from sklearn.linear_model import LogisticRegression
import numpy as np
x_train = np.array([[1,2,3],[1,3,4],[2,1,2],[4,5,6],[3,5,3],[1,7,2]])
y_train = np.array([0, 0, 0, 1, 1, 1])
x_test = np.array([[2,2,2],[3,2,6],[1,7,4]])
clf = LogisticRegression()
clf.fit(x_train, y_train)
# 返回预测标签
clf.predict(x_test)
array([1, 0, 1])
# 返回预测属于某标签的概率
clf.predict_proba(x_test)
array([[ 0.43348191, 0.56651809],[ 0.84401838, 0.15598162],[ 0.13147498, 0.86852502]])

预测[2,2,2]的标签是0的概率为0.43348191,1的概率为0.56651809

预测[3,2,6]的标签是0的概率为0.84401838,1的概率为0.15598162

预测[1,7,4]的标签是0的概率为0.13147498,1的概率为0.86852502

probas = clf.predict(x_test)
predict_proba返回的是一个n行k列的数组(probas),n是数据集的数据量,k是标签数。
probas[: , j]打印出来的是每个数据对标签j预测出的概率

三、数据可视化seaborn

sns.set(context="notebook", style="dark", palette=sns.diverging_palette(240, 10, n=2))
seaborn中有五种可供选择的主题:

 1.darkgrid(灰色网格)
 2.whitegrid(白色网格)
 3.dark(黑色)
 4.white(白色)
 5.ticks(十字叉)

sns.diverging_palette的意义:
sns.palplot(sns.diverging_palette(220, 20, n=7))

在这里插入图片描述

sns.palplot(sns.diverging_palette(145, 280, s=85, l=25, n=7))

在这里插入图片描述
sep参数控制面板中间区域的两个渐变的宽度:

sns.palplot(sns.diverging_palette(10, 220, sep=80, n=7))

在这里插入图片描述
也可以用中间的色调来选择调色,而不是用亮度:

sns.palplot(sns.diverging_palette(255, 133, l=60, n=7, center="dark"))

在这里插入图片描述

四、Pandas:DataFrame对象的基础操作

import pandas as pd
import numpy as npdf = pd.DataFrame([1, 2, 3, 4, 5], columns=['cols'], index=['a','b','c','d','e'])
print df
    cols
a     1
b     2
c     3
d     4
e     5
df2 = pd.DataFrame([[1, 2, 3],[4, 5, 6]], columns=['col1','col2','col3'], index=['a','b'])
print df2
   col1  col2  col3
a     1     2     3
b     4     5     6
df3 = pd.DataFrame(np.array([[1,2],[3,4]]), columns=['col1','col2'], index=['a','b'])
print df3
   col1  col2
a     1     2
b     3     4
df4 = pd.DataFrame({'col1':[1,3],'col2':[2,4]},index=['a','b'])
print df4
   col1  col2
a     1     2
b     3     4

创建DataFrame对象的数据可以为列表,数组和字典,列名和索引为列表对象。
更多操作详见:https://blog.csdn.net/u014281392/article/details/75331570

五、sklearn.svm.LinearSVC

from sklearn import svm
svc = svm.LinearSVC(C=1, loss='hinge', max_iter=1000)
# 接下来与SVM函数一样正常训练即可
svc.fit(data[['X1', 'X2']], data['y'])
svc.score(data[['X1', 'X2']], data['y'])

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

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

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)

  • penalty : string, ‘l1’ or ‘l2’ (default=’l2’)
    指定惩罚中使用的规范。 'l2’惩罚是SVC中使用的标准。 'l1’导致稀疏的coef_向量。

  • loss : string, ‘hinge’ or ‘squared_hinge’ (default=’squared_hinge’)
    指定损失函数。 “hinge”是标准的SVM损失(例如由SVC类使用),而“squared_hinge”是hinge损失的平方。

  • dual : bool, (default=True)
    选择算法以解决双优化或原始优化问题。 当n_samples> n_features时,首选dual = False。

  • tol : float, optional (default=1e-4)
    公差停止标准

  • C : float, optional (default=1.0)
    错误项的惩罚参数

  • multi_class : string, ‘ovr’ or ‘crammer_singer’ (default=’ovr’)
    如果y包含两个以上的类,则确定多类策略。 “ovr”训练n_classes one-vs-rest分类器,而“crammer_singer”优化所有类的联合目标。 虽然crammer_singer在理论上是有趣的,因为它是一致的,但它在实践中很少使用,因为它很少能够提高准确性并且计算成本更高。 如果选择“crammer_singer”,则将忽略选项loss,penalty和dual。

  • fit_intercept : boolean, optional (default=True)
    是否计算此模型的截距。 如果设置为false,则不会在计算中使用截距(即,预期数据已经居中)。

  • intercept_scaling : float, optional (default=1)
    当self.fit_intercept为True时,实例向量x变为[x,self.intercept_scaling],即具有等于intercept_scaling的常量值的“合成”特征被附加到实例向量。 截距变为intercept_scaling *合成特征权重注意! 合成特征权重与所有其他特征一样经受l1 / l2正则化。 为了减小正则化对合成特征权重(并因此对截距)的影响,必须增加intercept_scaling。

  • class_weight : {dict, ‘balanced’}, optional
    将类i的参数C设置为SVC的class_weight [i] * C. 如果没有给出,所有课程都应该有一个重量。 “平衡”模式使用y的值自动调整与输入数据中的类频率成反比的权重,如n_samples /(n_classes * np.bincount(y))

  • verbose : int, (default=0)
    启用详细输出。 请注意,此设置利用liblinear中的每进程运行时设置,如果启用,可能无法在多线程上下文中正常工作。

  • random_state : int, RandomState instance or None, optional (default=None)
    在随机数据混洗时使用的伪随机数生成器的种子。 如果是int,则random_state是随机数生成器使用的种子; 如果是RandomState实例,则random_state是随机数生成器; 如果为None,则随机数生成器是np.random使用的RandomState实例。

  • max_iter : int, (default=1000)
    要运行的最大迭代次数。

这篇关于学习SVM中碰到的函数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1072231

相关文章

MySQL中FIND_IN_SET函数与INSTR函数用法解析

《MySQL中FIND_IN_SET函数与INSTR函数用法解析》:本文主要介绍MySQL中FIND_IN_SET函数与INSTR函数用法解析,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一... 目录一、功能定义与语法1、FIND_IN_SET函数2、INSTR函数二、本质区别对比三、实际场景案例分

C++ Sort函数使用场景分析

《C++Sort函数使用场景分析》sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变,如果某些场景需要保持相同元素间的相对顺序,可使... 目录C++ Sort函数详解一、sort函数调用的两种方式二、sort函数使用场景三、sort函数排序

C语言函数递归实际应用举例详解

《C语言函数递归实际应用举例详解》程序调用自身的编程技巧称为递归,递归做为一种算法在程序设计语言中广泛应用,:本文主要介绍C语言函数递归实际应用举例的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录前言一、递归的概念与思想二、递归的限制条件 三、递归的实际应用举例(一)求 n 的阶乘(二)顺序打印

C/C++错误信息处理的常见方法及函数

《C/C++错误信息处理的常见方法及函数》C/C++是两种广泛使用的编程语言,特别是在系统编程、嵌入式开发以及高性能计算领域,:本文主要介绍C/C++错误信息处理的常见方法及函数,文中通过代码介绍... 目录前言1. errno 和 perror()示例:2. strerror()示例:3. perror(

Kotlin 作用域函数apply、let、run、with、also使用指南

《Kotlin作用域函数apply、let、run、with、also使用指南》在Kotlin开发中,作用域函数(ScopeFunctions)是一组能让代码更简洁、更函数式的高阶函数,本文将... 目录一、引言:为什么需要作用域函数?二、作用域函China编程数详解1. apply:对象配置的 “流式构建器”最

Android Kotlin 高阶函数详解及其在协程中的应用小结

《AndroidKotlin高阶函数详解及其在协程中的应用小结》高阶函数是Kotlin中的一个重要特性,它能够将函数作为一等公民(First-ClassCitizen),使得代码更加简洁、灵活和可... 目录1. 引言2. 什么是高阶函数?3. 高阶函数的基础用法3.1 传递函数作为参数3.2 Lambda

C++中::SHCreateDirectoryEx函数使用方法

《C++中::SHCreateDirectoryEx函数使用方法》::SHCreateDirectoryEx用于创建多级目录,类似于mkdir-p命令,本文主要介绍了C++中::SHCreateDir... 目录1. 函数原型与依赖项2. 基本使用示例示例 1:创建单层目录示例 2:创建多级目录3. 关键注

C++中函数模板与类模板的简单使用及区别介绍

《C++中函数模板与类模板的简单使用及区别介绍》这篇文章介绍了C++中的模板机制,包括函数模板和类模板的概念、语法和实际应用,函数模板通过类型参数实现泛型操作,而类模板允许创建可处理多种数据类型的类,... 目录一、函数模板定义语法真实示例二、类模板三、关键区别四、注意事项 ‌在C++中,模板是实现泛型编程

kotlin的函数forEach示例详解

《kotlin的函数forEach示例详解》在Kotlin中,forEach是一个高阶函数,用于遍历集合中的每个元素并对其执行指定的操作,它的核心特点是简洁、函数式,适用于需要遍历集合且无需返回值的场... 目录一、基本用法1️⃣ 遍历集合2️⃣ 遍历数组3️⃣ 遍历 Map二、与 for 循环的区别三、高

C语言字符函数和字符串函数示例详解

《C语言字符函数和字符串函数示例详解》本文详细介绍了C语言中字符分类函数、字符转换函数及字符串操作函数的使用方法,并通过示例代码展示了如何实现这些功能,通过这些内容,读者可以深入理解并掌握C语言中的字... 目录一、字符分类函数二、字符转换函数三、strlen的使用和模拟实现3.1strlen函数3.2st