sklearn SVM 自定义内核

     2023-03-12     83

关键词:

【中文标题】sklearn SVM 自定义内核【英文标题】:sklearn SVM custom kernel 【发布时间】:2014-05-08 02:01:28 【问题描述】:

我需要在sklearn 中实现一个自定义内核。

这将是一个自定义线性内核:

def my_kernel(x, y):
    return np.dot(x, y.T)

但是我在做 RBF 内核之类的事情时遇到了麻烦。是否可以在 sklearn 自定义内核中做到这一点?

我试过这个:

def my_kernel(x, y):
    gamma = 0.01
    return np.exp((gamma* np.power(np.linalg.norm(x-y),2)))`

但是没有用。

(我知道有RBF的预实现,但是需要手动实现,因为需要添加一些参数)

【问题讨论】:

您在 gamma 之前缺少减号。查看正态分布方程。 试过了,同样的问题 另外,内核函数应该使用 MATRIX X 和 MATRIX Y 并返回内核值的 MATRIX(gram 矩阵),而不仅仅是一个元素。 “但是没有用。”为了获得更多帮助,我们必须知道 what 没有工作 - 它没有执行,没有产生预期的行为,预期的行为是什么。正如@lennon310 提到的——文档中有一个很好的例子。你试过吗?什么不起作用? 【参考方案1】:

你的函数看起来不错。只需使用

clf = svm.SVC(kernel=my_kernel)
clf.fit(X, Y)

有an example与您的应用程序相关。

【讨论】:

【参考方案2】:

我已经实现了这样的东西

import numpy as np
from sklearn.metrics.pairwise import euclidean_distances
def gaussian_kernel(X, Y):
    kernel = euclidean_distances(X, Y) ** 2
    kernel = kernel*(-1/(self.gamma**2))
    kernel = np.exp(kernel)
    return kernel

然后用我定义的内核调用了 svm

from sklearn import svm
clf = svm.SVC(kernel=gaussian_kernel, max_iter = 10000)
clf.fit(X_train, y_train)

这似乎工作正常。我唯一没有做的就是将一个超参数从 svm 传递给我的内核实现,所以我开始全局定义超参数,而不是作为一种解决方法。

如您所见,我已经定义了一个我想调整的 self.gamma,但是在初始化 svm 时定义的 gamma 没有传递给我的函数。

【讨论】:

如何使用自定义 SVM 内核?

...中实现我自己的高斯内核,只是为了练习。我正在使用:sklearn.svm.SVC(kernel=my_kernel)但我真的不明白这是怎么回事。我希望函数my_kernel以X矩阵的列作为参数调用,而不是使用X、X作为参数调用它。看看这些例子,事情就不是很清楚... 查看详情

Sklearn SVM 自定义 rbf 核函数

】SklearnSVM自定义rbf核函数【英文标题】:SklearnSVMcustomrbfkernelfunction【发布时间】:2021-12-2405:07:23【问题描述】:我正在为sklearn的SVC类创建一个自定义rbf函数,如下所示:defrbf_kernel(x,y,gamma):dis=np.sqrt(((x.reshape(-1,1))-y.reshape(1,-1))**2)... 查看详情

SVM 的自定义内核,何时应用它们?

】SVM的自定义内核,何时应用它们?【英文标题】:CustomkernelsforSVM,whentoapplythem?【发布时间】:2016-09-2421:38:05【问题描述】:我是机器学习领域的新手,现在正试图了解最常见的学习算法是如何工作的,并了解何时应用它们。目... 查看详情

在 R 中为 svm 编写自定义内核

】在R中为svm编写自定义内核【英文标题】:WritecustomkernelforsvminR【发布时间】:2017-07-2618:34:19【问题描述】:我希望在R中使用e1071包的svm()函数。我是这个包的新手,我想知道是否可以在svm()中编写自己的自定义内核可调用。我... 查看详情

SVM 自定义 RBF 内核 IndexError

】SVM自定义RBF内核IndexError【英文标题】:SVMcustomRBFkernelIndexError【发布时间】:2018-03-0716:35:42【问题描述】:我想为我的非线性可分数据实现SVMRBF内核。我将内核定义为:defrbf(va,vb):gamma=0.7returnexp(-gamma*linalg.norm(va-vb)**2)clf=svm.SVC(ke... 查看详情

R:使用自定义内核(用户定义内核)的 SVM 性能在 kernlab 中不起作用

】R:使用自定义内核(用户定义内核)的SVM性能在kernlab中不起作用【英文标题】:R:SVMperformanceusingcustomkernel(userdefinedkernel)isnotworkinginkernlab【发布时间】:2012-08-1814:30:23【问题描述】:我正在尝试使用用户定义的内核。我知道ker... 查看详情

scikit-learn 中自定义内核 SVM 的交叉验证

】scikit-learn中自定义内核SVM的交叉验证【英文标题】:CrossvalidationforcustomkernelSVMinscikit-learn【发布时间】:2015-09-2921:15:16【问题描述】:我想通过交叉验证使用scikit-learn对自定义内核SVM进行网格搜索。更准确地关注thisexample我想... 查看详情

错误 - 在 scikit-learn 中为 SVM 使用自定义内核

】错误-在scikit-learn中为SVM使用自定义内核【英文标题】:Error-UsingcustomkernelsforSVMinscikit-learn【发布时间】:2014-04-1507:27:42【问题描述】:我使用自己定义的内核函数创建了一个SVM实例。当我尝试在创建的模型上运行交叉验证时,... 查看详情

为 sklearn 的 SVC 使用自定义 rbf 内核函数比内置方法快得多

】为sklearn的SVC使用自定义rbf内核函数比内置方法快得多【英文标题】:Usingacustomrbfkernelfunctionforsklearn\'sSVCiswayfasterthanbuilt-inmethod【发布时间】:2021-12-0907:22:30【问题描述】:在使用Scikit-Learn的SVC实现时,我注意到一个相当奇特但... 查看详情

Matlab SVM 自定义核函数

】MatlabSVM自定义核函数【英文标题】:MatlabSVMcustomkernelfunction【发布时间】:2015-08-0610:46:04【问题描述】:在MatlabSVMtutorial中,它说您可以通过设置\'KernelFunction\',\'kernel\'来设置自己的内核函数,例如内核。内核必须具有以下形式... 查看详情

在 sklearn 中,具有线性内核的 SVM 模型和具有 loss=hinge 的 SGD 分类器有啥区别

】在sklearn中,具有线性内核的SVM模型和具有loss=hinge的SGD分类器有啥区别【英文标题】:InsklearnwhatisthedifferencebetweenaSVMmodelwithlinearkernelandaSGDclassifierwithloss=hinge在sklearn中,具有线性内核的SVM模型和具有loss=hinge的SGD分类器有什么区... 查看详情

具有不平衡数据的 SKlearn SVM RBF

】具有不平衡数据的SKlearnSVMRBF【英文标题】:SKlearnSVMRBFwithunbalanceddata【发布时间】:2016-07-1705:16:51【问题描述】:我一直在使用Sklearn对一些数据进行分类。我的数据非常不平衡(80:20)在使用RBF内核时有办法解决这个问题吗?... 查看详情

sklearn SVM 默认距离测量

】sklearnSVM默认距离测量【英文标题】:sklearnSVMdefaultdistancemeasurement【发布时间】:2020-04-0720:50:19【问题描述】:SVM在算法中使用距离度量,sklearnSVM中使用的默认距离测量是什么?可以改吗?【问题讨论】:【参考方案1】:SVM正... 查看详情

sklearn之svm-葡糖酒质量预测(代码片段)

1.基础支持向量机(SVMs)是一套用于分类、回归和异常值检测的监督学习方法。支持向量机的优点是:在高维空间中有效。在维度数量大于样本数量的情况下仍然有效。在决策函数中使用一个训练点子集(称为支持向量),因此它也是... 查看详情

将 SVM 分类器从 sklearn 导出到 Java 代码库 [关闭]

】将SVM分类器从sklearn导出到Java代码库[关闭]【英文标题】:ExportingSVMclassifiersfromsklearntoJavacodebase[closed]【发布时间】:2014-06-1821:40:24【问题描述】:我已经使用sklearn训练了一组SVM分类器(大部分是线性使用LinearSVM,但其中一些... 查看详情

在 sklearn 或任何 python 库中确定对非线性 SVM 回归贡献最大的特征

】在sklearn或任何python库中确定对非线性SVM回归贡献最大的特征【英文标题】:Determiningthemostcontributingfeaturesfornon-linearSVMregressioninsklearnoranypythonlibrary【发布时间】:2020-03-1412:09:12【问题描述】:我使用基于RBF内核的支持向量机回... 查看详情

在 Sci-kit Learn 中将参数解析为 SVM 的自定义核函数

】在Sci-kitLearn中将参数解析为SVM的自定义核函数【英文标题】:ParseparametertocustomkernelfunctionofSVMinSci-kitLearn【发布时间】:2015-03-2805:09:13【问题描述】:我按照教程SVMwithcustomkernel并尝试在SVM中使用自定义内核。比如我实现多项式... 查看详情

带有 scikit-learn 的用户定义的 SVM 内核

】带有scikit-learn的用户定义的SVM内核【英文标题】:UserdefinedSVMkernelwithscikit-learn【发布时间】:2015-10-1411:34:50【问题描述】:我在scikit-learn中自己定义内核时遇到问题。我自己定义了高斯核,能够拟合SVM,但不能用它来进行预测... 查看详情