如何使用线性 SVM?

How to use LinearSvm?

目前我正在使用 FastTree 进行二进制 class化,但我想尝试一下 SVM 并比较指标。

所有文档都提到了 LinearSvm,但我在任何地方都找不到代码示例。

mlContext.BinaryClassification.Trainers 没有 public 个 SVM 培训师。有 LinearSvm class 和 LinearSvm.TrainLinearSvm 静态方法,但它们似乎用于不同的事情。

我错过了什么?

版本:0.7

出于某种原因,在运行时 API 中没有训练器,但在 Legacy API(对于 v0.7)中发现了一个线性 SVM 训练器 here。他们可能会为即将到来的 API 生成一个新的,所以我的建议是要么使用旧的,要么等待更新的 API。

在这个阶段,ML.Net 还在开发中。

复制粘贴 response 我上了 Github:

我有两个答案给你:API的状态是什么,同时如何使用LinearSVM。

首先,我们在 ML.NET 代码库中有 LinearSVM,但我们还没有样本或 API 扩展将其放入 mlContext.BinaryClassification.Trainers。这正在 issue #1318 中解决。我会 link 这个问题,并将其标记为错误。

同时,您可以使用直接实例化来访问 LinearSVM:

var arguments = new LinearSvm.Arguments()
{
    NumIterations = 20
};
var linearSvm = new LinearSvm(mlContext, arguments);
var svmTransformer = linearSvm.Fit(trainSet);
var scoredTest = svmTransformer.Transform(testSet);

这将为您提供一个 ITransformer,此处称为 svmTransformer,您可以使用它对 IDataView 对象进行操作。