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

相关文章

Python itertools中accumulate函数用法及使用运用详细讲解

《Pythonitertools中accumulate函数用法及使用运用详细讲解》:本文主要介绍Python的itertools库中的accumulate函数,该函数可以计算累积和或通过指定函数... 目录1.1前言:1.2定义:1.3衍生用法:1.3Leetcode的实际运用:总结 1.1前言:本文将详

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

MySQL数据库函数之JSON_EXTRACT示例代码

《MySQL数据库函数之JSON_EXTRACT示例代码》:本文主要介绍MySQL数据库函数之JSON_EXTRACT的相关资料,JSON_EXTRACT()函数用于从JSON文档中提取值,支持对... 目录前言基本语法路径表达式示例示例 1: 提取简单值示例 2: 提取嵌套值示例 3: 提取数组中的值注意

Java function函数式接口的使用方法与实例

《Javafunction函数式接口的使用方法与实例》:本文主要介绍Javafunction函数式接口的使用方法与实例,函数式接口如一支未完成的诗篇,用Lambda表达式作韵脚,将代码的机械美感... 目录引言-当代码遇见诗性一、函数式接口的生物学解构1.1 函数式接口的基因密码1.2 六大核心接口的形态学

Oracle的to_date()函数详解

《Oracle的to_date()函数详解》Oracle的to_date()函数用于日期格式转换,需要注意Oracle中不区分大小写的MM和mm格式代码,应使用mi代替分钟,此外,Oracle还支持毫... 目录oracle的to_date()函数一.在使用Oracle的to_date函数来做日期转换二.日

C++11的函数包装器std::function使用示例

《C++11的函数包装器std::function使用示例》C++11引入的std::function是最常用的函数包装器,它可以存储任何可调用对象并提供统一的调用接口,以下是关于函数包装器的详细讲解... 目录一、std::function 的基本用法1. 基本语法二、如何使用 std::function

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06