导航菜单

跳到内容

nicolaspanel/node-svm

节点支持向量机

支持向量机(SVM)库节点.

净现值法 生成状态 覆盖率状态

支持向量机

维基百科以下为:

支持向量机是分析数据和识别模式的有监督学习模型。一个特殊的性质是,它们同时最小化经验分类误差和最大化几何余量;因此,它们也被称为最大边缘分类器。维基百科图片

安装

npm安装--保存节点-svm

快速入门

如果你不熟悉SVM,我强烈推荐指导.

下面是一个使用节点支持向量机近似XOR函数:

无功功率,无功功率 支持向量机 = 要求(“节点支持向量机”);

无功功率,无功功率 异或 = [
    [[0, 0], 0],
    [[0, 1], 1],
    [[1, 0], 1],
    [[1, 1], 0]
];

//初始化新的预测器
无功功率,无功功率 clf公司 = 新的 支持向量机.CSVC公司();

clf公司.火车(异或).完成(功能 () {
    //预测事物
    异或.对于每个(功能(前任){
        无功功率,无功功率 预测 = clf公司.预测同步(前任[0]);
        慰问.日志(“%d XOR%d=>%d”, 前任[0][0], 前任[0][1], 预测);
    });
});

/********控制台********
0异或0=>0
0“异或”1=>1
1“异或”0=>1
1或1=>0
*/

更多示例可用在这里.

注释:没有理由使用SVM计算XOR BTW。。。

美国石油学会

分类器

可能的分类器包括:

分类器 类型 参数 初始化
C_SVC(_SVC) 多类分类器 c(c) =新的支持向量机。CSVC(选项)
NU_SVC公司 多类分类器 =新的支持向量机。NuSVC(选项)
ONE_类 一类分类器 =新的svm。OneClassSVM(选项)
EPSILON_SVR公司 回归,回归 c(c),ε =新的支持向量机。EpsilonSVR(选项)
NU_SVR公司 回归,回归 c(c), =新的支持向量机。NuSVR(选项)

内核

可能的内核有:

内核 参数
线性的 无参数
,伽马射线,第页
径向基函数 伽马射线
SIGMOID公司 伽马射线,第页

参数和选项

可能的参数/选项包括:

姓名 默认值 描述
svm类型 C_SVC(_SVC) 使用的分类器
内核类型 径向基函数 使用的内核
c(c) [0.01,0.125,0.5,1,2] 的成本C_SVC(_SVC),EPSILON_SVR公司NU_SVR公司。可以是编号或一个阵列个数字中的个
[0.01,0.125,0.5,1] 对于NU_SVC公司,ONE_类NU_SVR公司。可以是编号或一个阵列个数字中的个
ε [0.01,0.125,0.5,1] 对于EPSILON_SVR公司。可以是编号或一个阵列个数字中的个
[2,3,4] 对于内核。可以是编号或一个阵列个数字中的个
伽马射线 [0.001,0.01,0.5] 对于,径向基函数SIGMOID公司果仁。可以是编号或一个阵列个数字中的个
第页 [0.125,0.5,0,1] 对于SIGMOID公司果仁。可以是编号或一个阵列个数字中的个
k折叠 4 k个的参数交叉验证.k个必须大于等于1。如果k===1然后将整个数据集用于测试和训练。
使正常化 真的 是否使用平均归一化在数据预处理期间
减少 真的 是否使用PCA公司在数据预处理期间降低数据集的维数
保留差异 0.99 定义对数据完整性的可接受影响(要求减少成为真的)
每股收益 1e-3号机组 终止标准容差
缓存大小 200 缓存大小(MB)。
收缩 真的 是否使用收缩启发法
可能性 是否训练SVC或SVR模型进行概率估计

下面的示例显示了如何使用它们:

无功功率,无功功率 支持向量机 = 要求(“节点支持向量机”);

无功功率,无功功率 clf公司 = 新的 支持向量机.支持向量机({
    svm类型以下为:“C_SVC”,
    c(c)以下为:[0.03125, 0.125, 0.5, 2, 8], 
    
    //核参数
    内核类型以下为:“径向基函数”,  
    伽马射线以下为:[0.03125, 0.125, 0.5, 2, 8],
    
    //培训选项
    千倍以下为:4,               
    使正常化以下为:真的,        
    减少以下为:真的,           
    保留的差异以下为:0.99, 
    每股收益以下为:1e-3号机组,              
    缓存大小以下为:200,               
    收缩以下为:真的,     
    可能性以下为:     
});

笔记以下为:

  • 您可以通过创建.nodesvmrc文件文件(JSON)。
  • 如果至少一个参数有多个值,节点支持向量机将检查所有可能的组合,以查看哪一个组合的结果最好(它执行网格搜索以最大化f分数用于分类和最小化均方误差用于回归)。

##培训

SVM可以使用svm#训练(数据集)方法。

伪代码:

无功功率,无功功率 clf公司 = 新的 支持向量机.支持向量机(选项);

clf公司
.火车(数据集)
.进步(功能(){
    // ...
})
.传播(功能(训练模型, 培训报告){
    // ...
});

笔记以下为:

  • 训练模型稍后可用于恢复预测器(请参阅这个例子更多信息)。
  • 培训报告包含有关预测器准确性的信息(如MSE、precison、recall、fscore、retained variance等)

预测

经过训练后,可以使用分类器对象预测新输入的值。您可以这样做:

  • 同步使用clf#predictSync(输入)
  • 异步使用clf#predict(inputs).then(function(predicted){…});

如果在初始化期间启用了概率您还可以预测每个类的概率:

  • 同步使用clf#预测概率同步(输入).
  • 异步使用clf#预测概率(输入).then(函数(概率){…}).

注释以下为:输入必须是1d数字数组

模型评估

一旦预测器经过训练,就可以根据测试集对其进行评估。

伪代码:

无功功率,无功功率 支持向量机 = 要求(“节点支持向量机”);
无功功率,无功功率 clf公司 = 新的 支持向量机.支持向量机(选项);
 
支持向量机.阅读(列车文件)
.然后(功能(数据集){
    返回 clf公司.火车(数据集);
})
.然后(功能(训练模型, 培训报告){
     返回 支持向量机.阅读(测试文件);
})
.然后(功能(测试集){
    返回 clf公司.评价(测试集);
})
.完成(功能(报告){
    慰问.日志(报告);
});

CLI(命令行界面)

节点支持向量机附带一个内置的命令行解释器。

要使用它,您必须安装节点支持向量机全局使用npm安装-g节点-svm.

请参见$node-svm-h以获取完整的命令行参考。

帮助

$node-svm帮助[<命令>]

显示有关的帮助信息节点支持向量机

火车

$node-svm训练<数据集文件>[<在哪里保存预测模型>] [<选项>]

使用给定的数据集训练新模型

注释:使用$node-svm序列<数据集文件>-i动态设置参数值。

评价

$node-svm评估<模型文件> <测试集文件>[<选项>]

根据测试集评估模型的准确性

它是如何工作的

节点支持向量机使用官方libsvm C++库3.20版。

有关更多信息,请参阅:

贡献

随意选择并改进/增强节点支持向量机以你想要的任何方式。

如果您认为社区将从您的更改中受益,请发送拉取请求:

  • 为项目分叉。
  • 添加功能或修复错误。
  • 必要时添加文档。
  • 为它添加测试。这很重要,所以我不会在将来的版本中无意中破坏它(运行咕哝npm测试).
  • 向发送拉取请求发展分支。

#常见问题###分段故障问:节点在训练期间返回“分段错误”错误。发生什么事?

A1:您的数据集为空或其格式不正确。

A2:你的数据集太大了。

###nu-SVC和C-SVC之间的差异问:nu-SVC和C-SVC有什么区别?

答:在此处回答

###其他问题

许可证

麻省理工学院

githalytics.com alpha