@code-dot-org/svm

中文文档
0.1.1发布于 2021/09/09CommonJS零依赖近 30 天下载 4925

代码.org分叉 Karopathy/svmjs用于代码工作室学习环境中.

中文使用文档
文档目录5 节
  1. 在线图形用户界面演示
  2. 使用量
  3. 在节点中使用
  4. 执行详情
  5. 许可证

svmjs (英语)

安德烈·卡纳多里 2012年7月 (简体中文)

svmjs是SMO算法的轻量级执行,用于训练二进制 支持矢量机. 由于采用双重表述,它也支持 任意内核。 正确性测试,连同 MATLAB 参考代码 正在测试.

在线图形用户界面演示

此处可见: http://cs.stanford.edu/~karpathy/svmjs/demo/ (中文(简体) )

对应代码在/demo目录内.

使用量

最简单的使用例:

// include the library
<script src="./svmjs/lib/svm.js"></script>
<script>
data = [[0,0], [0,1], [1,0], [1,1]];
labels = [-1, 1, 1, -1];
svm = new svmjs.SVM();
svm.train(data, labels, {C: 1.0}); // C is a parameter to SVM
testlabels = svm.predict(testdata);
</script>

这里, data 财务报告和审定财务报表 testdata 是一个2D,NxD的浮点数组, labels 财务报告和审定财务报表 testlabels 是含有 1 或 -1 的 N 大小阵列。 您也可以查询原始边距 :

margins = svm.margins(testdata);
margin = svm.marginOne(testadata[0]);

库支持任意内核,但目前带有线性内核和rbf内核:

svm.train(data, labels, { kernel: function(v1,v2){ /* return K(v1, v2) */} }); // arbitrary function
svm.train(data, labels, { kernel: 'linear' });
svm.train(data, labels, { kernel: 'rbf', rbfsigma: 0.5 }); // sigma in the gaussian kernel = 0.5

对于训练,你可以通过若干选项。 以下为默认值 :

var options = {};
/* For C, Higher = you trust your data more. Lower = more regularization.
Should be in range of around 1e-2 ... 1e5 at most. */
options.C = 1.0;
options.tol = 1e-4; // do not touch this unless you're pro
options.alphatol = 1e-7; // used for pruning non-support vectors. do not touch unless you're pro
options.maxiter = 10000; // if you have a larger problem, you may need to increase this
options.kernel = svmjs.linearKernel; // discussed above
options.numpasses = 10; // increase this for higher precision of the result. (but slower)
svm.train(data, labels, options);

拇指规则:你几乎总是想先尝试线性SVM,看看它是如何工作的. 你想这样 以大约1e-2到1e5的 C 的不同值进行游戏,因为每个数据集都不同. C=1 通常是一种相当合理的价值。 粗略来说,C是SVM的成本 当它错误的分类你之一 培训实例。 如果你增加, SVM 会非常努力地适应你的所有数据, 这也许是好的 如果你强烈相信自己的数据。 在实践中,你通常不希望它太高。 如果线性内核 效果不好,试试rbf内核. 你必须尝试不同的C值 和同样关键的西格玛值 对于高斯内核.

线性SVM与任何其他内核的比SVM快得多. 如果你想要更快一点 但不太准确, 您想要玩 option.tol( trt 增加一点) 。 你也可以尝试 减少选项.maxiter,特别是选项.numpasses(减少一点). 如果使用非线性 svm,您也可以在测试时通过玩来加速 svm 选项.alphatol(try 增加一点).

如果您使用线性或rbf内核(而不是一些自定义内核),您可以加载并保存 svm :

var svm = new svmjs.SVM();
var json = svm.toJSON();
var svm2 = new svmjs.SVM();
svm2.fromJSON(json);

在节点中使用

要使用此库 节点.js,安装 npm数字 :

npm install svm

像这样使用:

var svm = require("svm");
var SVM = new svm.SVM();
SVM.train(data, labels);

执行详情

SMO算法非常高效,所以你不必担心 无论你的问题有多严重, 都会耗尽空间。 但是,你确实需要 担心运行效率 在实践中, 有很多可以修炼的 用于选择对相( i, j) 优化, 这使用相当天真 办法。 如果你有一个大而复杂的问题,你需要增加 最多一个。 (或别用Javascript!)

许可证

麻省理工学院

版本与发布记录

@code-dot-org/svm 共发布 1 个版本,首次发布于 2021/09/09;过去 12 个月发布了 0 个版本。

版本发布日期距今
0.1.1latest2021/09/095 年前

关于 @code-dot-org/svm 的常见问题

@code-dot-org/svm 是什么?

代码.org分叉 Karopathy/svmjs用于代码工作室学习环境中.

如何安装 @code-dot-org/svm?

在项目目录运行 npm install @code-dot-org/svm,或使用 pnpm add / yarn add / bun add。

@code-dot-org/svm 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/code-dot-org__svm 是否存在。

@code-dot-org/svm 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@code-dot-org/svm 可以商用吗?

@code-dot-org/svm 使用 未声明 许可。package.json 没有声明许可证。没有许可证的代码默认保留全部权利,商用前请联系作者或查看仓库中的 LICENSE 文件。以上为概括,不构成法律意见,请以许可原文为准。

@code-dot-org/svm 的下载量有多少?

根据 npm 官方下载统计,@code-dot-org/svm 在 2026/10/10 – 2026/11/08 这 30 天内被下载 4,925 次,日均约 164 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@code-dot-org/svm 还在维护吗?

最新版本 0.1.1 发布于 2021/09/09(5 年前);至今共发布 1 个版本,其中过去 12 个月发布了 0 个;首次发布于 2021/09/09。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。