学习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

相关文章

51单片机学习记录———定时器

文章目录 前言一、定时器介绍二、STC89C52定时器资源三、定时器框图四、定时器模式五、定时器相关寄存器六、定时器练习 前言 一个学习嵌入式的小白~ 有问题评论区或私信指出~ 提示:以下是本篇文章正文内容,下面案例可供参考 一、定时器介绍 定时器介绍:51单片机的定时器属于单片机的内部资源,其电路的连接和运转均在单片机内部完成。 定时器作用: 1.用于计数系统,可

问题:第一次世界大战的起止时间是 #其他#学习方法#微信

问题:第一次世界大战的起止时间是 A.1913 ~1918 年 B.1913 ~1918 年 C.1914 ~1918 年 D.1914 ~1919 年 参考答案如图所示

[word] word设置上标快捷键 #学习方法#其他#媒体

word设置上标快捷键 办公中,少不了使用word,这个是大家必备的软件,今天给大家分享word设置上标快捷键,希望在办公中能帮到您! 1、添加上标 在录入一些公式,或者是化学产品时,需要添加上标内容,按下快捷键Ctrl+shift++就能将需要的内容设置为上标符号。 word设置上标快捷键的方法就是以上内容了,需要的小伙伴都可以试一试呢!

AssetBundle学习笔记

AssetBundle是unity自定义的资源格式,通过调用引擎的资源打包接口对资源进行打包成.assetbundle格式的资源包。本文介绍了AssetBundle的生成,使用,加载,卸载以及Unity资源更新的一个基本步骤。 目录 1.定义: 2.AssetBundle的生成: 1)设置AssetBundle包的属性——通过编辑器界面 补充:分组策略 2)调用引擎接口API

Javascript高级程序设计(第四版)--学习记录之变量、内存

原始值与引用值 原始值:简单的数据即基础数据类型,按值访问。 引用值:由多个值构成的对象即复杂数据类型,按引用访问。 动态属性 对于引用值而言,可以随时添加、修改和删除其属性和方法。 let person = new Object();person.name = 'Jason';person.age = 42;console.log(person.name,person.age);//'J

大学湖北中医药大学法医学试题及答案,分享几个实用搜题和学习工具 #微信#学习方法#职场发展

今天分享拥有拍照搜题、文字搜题、语音搜题、多重搜题等搜题模式,可以快速查找问题解析,加深对题目答案的理解。 1.快练题 这是一个网站 找题的网站海量题库,在线搜题,快速刷题~为您提供百万优质题库,直接搜索题库名称,支持多种刷题模式:顺序练习、语音听题、本地搜题、顺序阅读、模拟考试、组卷考试、赶快下载吧! 2.彩虹搜题 这是个老公众号了 支持手写输入,截图搜题,详细步骤,解题必备

《offer来了》第二章学习笔记

1.集合 Java四种集合:List、Queue、Set和Map 1.1.List:可重复 有序的Collection ArrayList: 基于数组实现,增删慢,查询快,线程不安全 Vector: 基于数组实现,增删慢,查询快,线程安全 LinkedList: 基于双向链实现,增删快,查询慢,线程不安全 1.2.Queue:队列 ArrayBlockingQueue:

【操作系统】信号Signal超详解|捕捉函数

🔥博客主页: 我要成为C++领域大神🎥系列专栏:【C++核心编程】 【计算机网络】 【Linux编程】 【操作系统】 ❤️感谢大家点赞👍收藏⭐评论✍️ 本博客致力于知识分享,与更多的人进行学习交流 ​ 如何触发信号 信号是Linux下的经典技术,一般操作系统利用信号杀死违规进程,典型进程干预手段,信号除了杀死进程外也可以挂起进程 kill -l 查看系统支持的信号

硬件基础知识——自学习梳理

计算机存储分为闪存和永久性存储。 硬盘(永久存储)主要分为机械磁盘和固态硬盘。 机械磁盘主要靠磁颗粒的正负极方向来存储0或1,且机械磁盘没有使用寿命。 固态硬盘就有使用寿命了,大概支持30w次的读写操作。 闪存使用的是电容进行存储,断电数据就没了。 器件之间传输bit数据在总线上是一个一个传输的,因为通过电压传输(电流不稳定),但是电压属于电势能,所以可以叠加互相干扰,这也就是硬盘,U盘

java中查看函数运行时间和cpu运行时间

android开发调查性能问题中有一个现象,函数的运行时间远低于cpu执行时间,因为函数运行期间线程可能包含等待操作。native层可以查看实际的cpu执行时间和函数执行时间。在java中如何实现? 借助AI得到了答案 import java.lang.management.ManagementFactory;import java.lang.management.Threa