问题标签 [kernlab]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3256 浏览

r - 从内核实验室调整 ksvm

我想在 R 中使用 SVM 实现来做一些回归。我已经尝试过使用svme1071但我受到那里的内核功能的限制。所以我继续ksvmkernlab. kernlab但是我有一个主要缺点是(如)tune.svm中没有提供调整功能e1071。有人可以解释如何在那里调整不同内核的参数吗?

PS。我想特别使用rbfdot内核。因此,如果至少有人可以帮助我了解如何调整 sigma,我将非常感激。

聚苯乙烯。我完全知道"automatic"kpar 的值可以用来“计算一个好的 sigma ”。但我需要一些更具体、更符合tune.svm.

0 投票
1 回答
1422 浏览

r - 在R中运行kernlab包的ksvm时这个错误是什么意思

我使用以下语法在 R 中调用 kernlab 包的 ksvm 方法

x 参数是具有特征值的 data.frame,y 参数是具有各种值的列表。

运行上述行时出现以下错误。

它想在这里告诉我什么?

0 投票
1 回答
979 浏览

r - 使用kernlab R进行所有与所有分类

我找不到任何关于如何在 R 中使用 kernlab 包执行 All vs All 多类分类的文档。任何形式的帮助都将不胜感激。

0 投票
1 回答
831 浏览

r - 在kernlab中的SVM训练之外的内核矩阵计算

我正在开发一种新算法,该算法会生成一个修改过的内核矩阵,用于使用 SVM 进行训练,但遇到了一个奇怪的问题。

出于测试目的,我比较了使用 kernelMatrix 接口和普通内核接口学习的 SVM 模型。例如,

请注意,我已关闭缩放,因为我不确定如何在内核矩阵上执行缩放。

据我了解,两者都svp1应该svp2返回相同的模型。但是,我观察到对于一些数据集,例如glass0来自KEEL的数据集并非如此。

我在这里想念什么?

0 投票
1 回答
1492 浏览

r - 缩放训练后如何让 ksvm 预测非缩放值

ksvm当我从包中运行 SVM 时,我最终模型上命令的kernlab所有输出都会被缩放。predict我知道这是因为我发起了scaled = T,但我也知道在 SVM 建模中首选扩展您的数据。我怎样才能轻松地告诉ksvm返回非缩放预测?如果没有,有没有办法将预测的缩放值操纵为原始值?谢谢,代码如下:

0 投票
0 回答
616 浏览

r - 如何计算使用“kernlab”包中的“ksvm”构建的 SVM 模型的 AIC?

我使用“kernlab”包中的“ksvm”构建了一个 SVM。这是我的代码:

无论如何要计算这个模型的 AIC(Akaike 信息标准)吗?谢谢!

0 投票
1 回答
1257 浏览

r - 如何在 R 中将多个时间序列数据呈现给 SVM(ksvm)(或者,如何将二维输入数据呈现给 SVM)

对于六个单独的时间序列传感器输入,如何让ksvm模型知道数据集中的前 100 个数字都是来自一个传感器的时间序列数据,而接下来的 100 个数字都是来自另一个传感器的时间序列数据,等等?或者(也许更一般地),我如何将二维输入数据呈现给 SVM?

我需要二进制是/否预测模型的过程有六个非周期性时间序列输入,所有输入都具有相同的采样频率。一个事件触发数据收集的开始,在预定时间后,我需要一个是/否预测(最好包括一个正确概率输出)。应该产生“是”与“否”的时间序列输入的特征尚不清楚,但已知的是每个输入时间序列数据与最终结果之间应该存在某种相关性。所有输入上也存在明显的噪声。有意义的信息和噪声都以短持续时间的突发形式出现在输入上(对于给定的输入源,有意义的突发总是在相同的一般时间),但是很难确定哪些突发是有意义的,哪些是噪声;即,对于一个输入,突发发生在“正确”时间这一事实并不一定表示“是”输出;它可能只是噪音。要知道预测是否应该是“是”,模型需要以某种方式合并来自所有六个时间序列输入的信息。我收集了大约 900 个“否”结果和 100 个“是”结果的先前数据。

我对 R 和 SVM 都很陌生,但我想我想使用 SVM 模型(kernlab 的 ksvm)。我无法弄清楚如何将输入数据呈现给它。我也不确定如何告诉 ksvm 数据是时间序列数据,或者这是否相关。我尝试使用 Rattle GUI 前端到 R 从 csv 文件中提取我的数据,但我无法弄清楚如何将来自所有六个输入的时间序列数据呈现到 ksvm 模型中。作为 csv 文件输入,导入所有 1000 个样本的数据的唯一方法似乎是组织输入数据,使所有样本数据(所有六个时间序列输入)都在 csv 文件的单行上,在 csv 文件的每一行上显示一个单独的已知结果文件的数据。但这样做时,第一个、第二个、第三个等数字是来自第一个传感器的时间序列数据的每个部分的事实在转换中丢失了,以及第 101 个、第 102 个、第 103 个等数字是来自第二个传感器的时间序列数据的每一部分,依此类推;对于 ksvm 模型,每个数据样本仅被视为与其邻居无关的孤立数字。如何将这些数据作为六个独立但相互关联的时间序列数组呈现给 ksvm?或者如何将二维数据数组呈现给 ksvm?


更新:

好的,我尝试了两种基本策略,但结果很糟糕(嗯,结果模型比盲目猜测要好,但不多)。

首先,不熟悉 R,我使用 Rattle GUI 前端到 R。我有一种感觉,这样做可能会限制我的选择。但无论如何,这就是我所做的......

已知结果文件示例(仅显示 4 个传感器而不是 6 个,仅显示 7 个时间样本而不是 100 个):

training168_yes.csv

training169_no.csv

我知道将所有训练样本的数据导入 R/Rattle 的唯一方法是将所有结果文件合并到一个 .csv 文件中,每行一个样本结果。我只能想到两种方法来做到这一点,所以我都尝试了它们(我知道当我这样做的时候,这样做我隐藏了潜在的重要信息,这是这个 SO 问题的重点):

试验#1:对于每个结果文件,将每个传感器的样本添加到一个数字中,消除所有时间信息:

当我完成使用 Rattle 生成 SVM 后,Rattle 的日志选项卡为我提供了以下脚本,可用于在 RGui 中生成和训练 SVM:

试验#2:对于每个结果文件,将每次所有传感器的样本添加到一个数字中,消除有关单个传感器的任何信息:

我再次使用 Rattle 生成 SVM,Rattle 的日志选项卡为我提供了以下脚本:

不幸的是,即使有近 1000 个训练数据集,这两个结果模型都只给我比随机机会得到的结果稍好一点。我敢肯定,如果有办法避免破坏时间数据或不同传感器之间的区别,它会做得更好。我怎样才能做到这一点?顺便说一句,我不知道这是否重要,但是所有传感器的传感器读数几乎是在同一时间获取的,但是一次读数和下一次读数之间的时间差通常从一次运行到下一个(即在“培训”文件之间),我无法控制。我认为这可能是安全的忽略(即我认为按顺序对读数进行编号可能是安全的,如 1、2、3 等)。

0 投票
2 回答
4855 浏览

r - 使用线性内核调整 SVM 时,R 插入符号异常缓慢

在使用caret. 在不进行调整的情况下训练单个模型时,具有径向基核的 SVM 比具有线性核的 SVM 花费更多时间,这是意料之中的。然而,当在相同的惩罚网格上调整两个内核的 SVM 时,具有线性内核的 SVM 比具有径向基内核的 SVM 花费的时间要多得多。这种行为可以很容易地在 Windows 和 Linux 的 R 3.2 和caret6.0-47 中重现。有谁知道为什么调整线性 SVM 比径向基内核 SVM 需要更多时间?

玩具示例代码如下:

0 投票
0 回答
802 浏览

r - 如何确定 R 中线性核的 svm 分类器的系数?

我在 RI 中使用 svm 的 kernlab 包正在使用线性内核,以便我可以直接检查特征向量的重要性,即我的变量。使用这些特征向量的系数,我需要计算权重模型中的各种因素,以便我们可以评估 svm 在我的特征空间中绘制的线性分离平面。基本上我想计算转置(w)* x + b中的w。有人可以建议要做什么。我使用字段 alpha 和 b 以及 apha 索引并尝试从逻辑上计算权重向量,但为了验证我是否计算正确,我尝试在测试样本上预测其正确的预测分数,这与预测的值不匹配内置预测功能。如何计算权重?

0 投票
0 回答
597 浏览

r - R - 具有多个预测的一类 SVM 分类

我有一个包含 X 行和 5 列数据的矩阵。我正在尝试将函数 One-class SVM 与库 kernlab 和 e1071 一起使用。首先,我用值“TRUE”训练分类器 200 行,然后对其余行进行分类 (74)。我的问题是预测部分。因为我有五列,所以分类器独立地预测所有五列,从一行中给出五个预测。它应该使用由 5 列数据组成的单行中的单个 TRUE 或 FALSE 标签进行预测。我怎样才能得到一个标签而不是 5?谢谢。

数据在这里https://www.dropbox.com/sh/blnr3jvius8f3eh/AACOhqyzZGiDHAOPmyE__873a?dl=0名称为“Input.csv”。

劳尔