核函数

SVM简介及sklearn参数

吃可爱长大的小学妹 提交于 2020-03-15 14:01:26
1.SVM简介   SVM方法建立在统计学VC维和结构风险最小化原则上,既可以用于分类(二/多分类)、也可用于回归和异常值检测。SVM具有良好的鲁棒性,对未知数据拥有很强的泛化能力,特别是在数据量较少的情况下,相较其他传统机器学习算法具有更优的性能。    使用SVM作为模型时,通常采用如下流程: 对样本数据进行归一化 应用核函数对样本进行映射(最常采用和核函数是RBF和Linear,在样本线性可分时,Linear效果要比RBF好) 用cross-validation和grid-search对超参数进行优选 用最优参数训练得到模型 测试   sklearn中支持向量分类主要有三种方法:SVC、NuSVC、LinearSVC,扩展为三个支持向量回归方法:SVR、NuSVR、LinearSVR。   SVC和NuSVC方法基本一致,唯一区别就是损失函数的度量方式不同(NuSVC中的nu参数和SVC中的C参数);LinearSVC是实现线性核函数的支持向量分类,没有kernel参数,也缺少一些方法的属性,如support_等。 2. 参数 SVC  class sklearn.svm. SVC ( C=1.0 , kernel='rbf' , degree=3 , gamma='auto' , coef0=0.0 , shrinking=True , probability=False

核函数及SVM核函数的选择

元气小坏坏 提交于 2020-03-07 02:12:59
核函数: 当数据非线性可分时,可将数据从低维空间映射到高维空间,使数据在高维空间线性可分,之后在优化时需要计算内积,复杂度很高。而核函数准确地说是一种核技巧,能够简便的计算内积,从而能够简便地解决非线性问题。 SVM核函数的选择: 吴恩达老师老师的建议: 1、当样本特征数目远远大于样本数量时,特征维度已经够高,这个时候往往数据线性可分,可考虑使用线性核函数。 2、当样本数量一般,样本特征维度也不高时,可以考虑高斯核 3、当样本数量较多,样本特征较少时,可考虑人工增加一些特征,使样本线性可分,然后再考虑使用线性核函数的SVM或者LR. 来源: CSDN 作者: 鸡汤本汤 链接: https://blog.csdn.net/YangTinTin/article/details/104704991

【源码阅读】opencv中opencl版本的dft函数的实现细节

Deadly 提交于 2020-03-06 00:50:34
1.函数声明 opencv-3.4.3\modules\core\include\opencv2\core.hpp:2157 CV_EXPORTS_W void dft(InputArray src, OutputArray dst, int flags = 0, int nonzeroRows = 0); 2.函数实现 opencv-3.4.3\modules\core\src\dxt.cpp:3315 void cv::dft( InputArray _src0, OutputArray _dst, int flags, int nonzero_rows ) { CV_INSTRUMENT_REGION() #ifdef HAVE_CLAMDFFT CV_OCL_RUN(ocl::haveAmdFft() && ocl::Device::getDefault().type() != ocl::Device::TYPE_CPU && _dst.isUMat() && _src0.dims() <= 2 && nonzero_rows == 0, ocl_dft_amdfft(_src0, _dst, flags)) #endif #ifdef HAVE_OPENCL CV_OCL_RUN(_dst.isUMat() && _src0.dims() <= 2, ocl_dft(

核函数

﹥>﹥吖頭↗ 提交于 2020-03-03 15:51:29
一、常用核函数: 1.线性核函数 : 线性核函数(Linear Kernel)是多项式核函数的特例,优点是简洁,缺点是对线性不可分数据集没有解决办法。主要用于线性可分的情况,我们可以看到特征空间到输入空间的维度是一样的,其参数少速度快,对于线性可分数据,其分类效果很理想,因此我们通常首先尝试用线性核函数来做分类,看看效果如何,如果不行再尝试其他的。 2.多项式核函数: 多项式核函数(Polynomial Kernel)可以实现将低维的输入空间映射到高纬的特征空间,但是多项式核函数的参数多,当多项式的阶数比较高的时候,核矩阵的元素值将趋于无穷大或者无穷小,计算复杂度会大到无法计算。 3.高斯核函数(RBF) 高斯核函数(Gaussian Kernel)也叫径向基核函数(Radial Basis Function),是一种局部性强的核函数,该函数的形状为钟形曲线,参数\sigma控制曲线的宽度(胖瘦)。可以把输入特征向量扩展到无限维度的空间里。高斯核函数计算出来的值永远在0到1之间。其可以将一个样本映射到一个更高维的空间内,该核函数是应用最广的一个,无论大样本还是小样本都有比较好的性能,而且其相对于多项式核函数参数要少,因此大多数情况下在不知道用什么核函数的时候,优先使用高斯核函数。 4.sigmoid核函数 sigmoid核函数(Sigmoid Kernel)

量化投资学习笔记31——《Python机器学习应用》课程笔记05

倖福魔咒の 提交于 2020-03-01 16:49:11
用分类算法进行上证指数涨跌预测。 根据今天以前的150个交易日的数据,预测今日股市涨跌。 交叉验证的思想:将数据集D划分为k个大小相似的互斥子集,每个子集都尽可能保持数据分布的一致性,即从D中通过分层抽样来得到。然后,每次用k-1个子集的并集作为训练集,余下的那个子集作为测试集。这样可以获得k组训练/测试集,从而可进行k次训练/测试,最终返回的是这k个测试结果的均值。通常称为"k者交叉验证",常用取值是10。 coding:utf-8 用分类算法预测股市涨跌 import pandas as pd import numpy as np from sklearn import svm from sklearn.model_selection import train_test_split import tushare as ts if name == " main ": 读取股票数据 data = pd.read_csv("HS300_his.csv") print(data.head()) data.sort_index(0,ascending=True,inplace=True) print(data.head()) dayfeature = 150 featurenum = 4*dayfeature x = np.zeros((data.shape[0] -

【记录一个问题】linux+opencv+cuvid解码1080P视频,当使用CUDA核函数的时候,必然崩溃

北城余情 提交于 2020-02-21 14:28:17
崩溃的信息如下: 1 OpenCV(4.1.0-dev) Error: Gpu API call (invalid configuration argument) in videoDecPostProcessFrame, file /home/admin/opencv/opencv_contrib-master/modules/cudacodec/src/cuda/nv12_to_rgb.cu, line 203 2 terminate called after throwing an instance of 'cv::Exception' 3 what(): OpenCV(4.1.0-dev) /home/admin/opencv/opencv_contrib-master/modules/cudacodec/src/cuda/nv12_to_rgb.cu:203: error: (-217:Gpu API call) invalid configuration argument in function 'videoDecPostProcessFrame' 4 5 Aborted (core dumped) 比较奇怪的点如下: 1. 同样的程序,解码720P视频/480P视频,并调用CUDA核函数做进一步处理,正常; 但是换1080P视频就出现以上错误。 2

机器学习笔记之支持向量机

北战南征 提交于 2020-02-12 21:12:59
机器学习笔记之支持向量机 解决什么问题 支持向量机解决的是二分类及多分类问题,由于在学之前学习了logistic回归,其实可以看到两者有着非常相似的地方 原理与思考 原理方面这一个帖子说的很详细了,不再赘述 原理简述 从图中可以看到,支持向量机的点乘操作,实际上就是让那个超平面与两个类的距离最大,因为你点乘下来是投影的和,而之后又带入代价函数。其实它的代价函数和logistic的代价函数非常像,为了让代价函数最小,我们选择的超平面也自然成为了那个最大间隔的分开向量。 但是在同时,我们有一个类似于正则化系数的C,这个C就是起到一个调节的作用 但是在这里,需要介绍一下对核函数的理解 如果我们不用核函数,也就相当于核函数默认为线性的,那么我们就相当于直接使用这个点乘来作为带入代价函数的输入。核函数的原理就是一个,当前点距离标志的相似程度,一般用距离为自变量,比如高斯核函数 我们的核l,向量为[3,5],那么在评价一个输入的向量时,我们带入函数f1,再将结果带入代价函数。 比如在这里,通过计算,落在红线以内的点,因为距离核l1 l2更近,我们将它们归为一类。 别忘了核函数的意义:x与核的相似程度 核函数的选择,参考: 例子与总结 import numpy as np import pylab as pl from sklearn import svm from sklearn import

Linux下的Libsvm使用历程录

99封情书 提交于 2020-02-11 02:55:41
原文:http://blog.csdn.net/meredith_leaf/article/details/6714144 Linux下的Libsvm使用历程录 首先下载Libsvm、Python和Gnuplot: libsvm的主页 http://www.csie.ntu.edu.tw/~cjlin/libsvm/ 上下载libsvm (偶用3.1版本) python的主页http://www.python.org下载 python (偶用3.2.1版本) gnuplot的主页 http://www.gnuplot.info/ 下载gnuplot (偶用4.4.3版本) LIBSVM 使用的一般步骤是: 1)按照LIBSVM软件包所要求的格式准备数据集; 2)对数据进行简单的缩放操作; 3)首要考虑选用RBF 核函数; 4)采用交叉验证选择最佳参数C与g ; 5)采用最佳参数C与g 对整个训练集进行训练获取支持向量机模型; 6)利用获取的模型进行测试与预测。 在执行以下操作之前先make生成 svm-scale, svm-train, svm-predict三个可执行文件。 1)LIBSVM使用的数据格式 该软件使用的训练数据和检验数据文件格式如下: [label] [index1]:[value1] [index2]:[value2] ... [label] [index1]:

LibSVM for Python 使用

半世苍凉 提交于 2020-02-10 14:22:54
经历手写SVM的惨烈教训(还是太年轻)之后,我决定使用工具箱/第三方库 Python libsvm的GitHub仓库 LibSVM是开源的SVM实现,支持C, C++, Java,Python , R 和 Matlab 等, 这里选择使用Python版本。 安装LibSVM 将LibSVM仓库的所有内容放入Python的包目录\Lib\site-packages或者工程目录中。 在libsvm根目录和python子目录下中分别新建名为 __init__.py 的空文件,这两个空文件将标识所在的目录为python包可以直接导入。 允许草民吐槽一下各种Blog里切换根目录的奇怪的解决方案: 这个 和 这个 因为经常使用svm,所以草民将libsvm包放入\Lib\site-packages目录下。在Python交互环境或在任意脚本中都可以使用 import libsvm.python 来使用libsvm的python接口。 使用LibSVM LibSVM的使用非常简单,只需调用有限的接口 示例1: from libsvm.python.svmutil import * from libsvm.python.svm import * y, x = [1,-1], [{1:1, 2:1}, {1:-1,2:-1}] prob = svm_problem(y, x) param = svm

sklearn-SVC实现与类参数

强颜欢笑 提交于 2020-02-10 14:22:39
sklearn-SVC 实现与类参数 SVC 继承了父类 BaseSVC SVC 类主要方法: ★__init__() 主要参数: C: float参数 默认值为1.0 错误项的惩罚系数。 C越大,即对分错样本的惩罚程度越大,因此在训练样本中准确率越高,但是泛化能力降低,也就是对测试数据的分类准确率降低。相反,减小C的话,容许训练样本中有一些误分类错误样本,泛化能力强。对于训练样本带有噪声的情况,一般采用后者,把训练样本集中错误分类的样本作为噪声。 kernel : str参数 默认为‘rbf’ 算法中采用的核函数类型,可选参数有: ‘linear’:线性核函数 ‘poly’:多项式核函数 ‘rbf’:径像核函数/高斯核 ‘sigmod’:sigmod核函数 ‘precomputed’:核矩阵 具体这些核函数类型,请参考上一篇博客中的核函数。需要说明的是, precomputed表示自己提前计算好核函数矩阵,这时候算法内部就不再用核函数去计算核矩阵,而是直接用你给的核矩阵。核矩阵为如下形式: 还有一点需要说明,除了上面限定的核函数外,还可以给出自己定义的核函数,其实内部就是用你自己定义的核函数来计算核矩阵。 degree : int型参数 默认为3 这个参数只对多项式核函数有用,是指多项式核函数的阶数 n 如果给的核函数参数是其他核函数,则会自动忽略该参数。 gamma :