问题标签 [libsvm]
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.
machine-learning - 自然语言处理中的二值化
二值化是将实体的彩色特征转换为数字向量(通常是二进制向量)的行为,以便为分类器算法提供良好的示例。
如果我们在哪里对句子“The cat ate the dog”进行二值化,我们可以首先为每个单词分配一个 ID(例如 cat-1、ate-2、the-3、dog-4),然后简单地将单词替换为它的 ID 给出了向量 <3,1,2,3,4>。
给定这些 ID,我们还可以通过为每个单词提供四个可能的槽位并将与特定单词对应的槽位设置为 1 来创建二进制向量,从而使向量 <0,0,1,0,1,0,0,0 ,0,1,0,0,0,0,0,1>。据我所知,后一种方法通常被称为词袋法。
现在我的问题是,在描述自然语言处理的一般特征,特别是基于转换的依赖解析(使用 Nivres 算法)时,最好的二值化方法是什么?
在这种情况下,我们不想对整个句子进行编码,而是要对解析的当前状态进行编码,例如堆栈上的顶部单词和输入队列中的第一个单词。由于顺序是高度相关的,这排除了词袋方法。
用best,我指的是使数据对分类器最易理解的方法,而不会占用不必要的内存。例如,我不希望一个单词 bigram 对 20000 个唯一单词使用 4 亿个特征,如果实际上只有 2% 的 bigrams 存在的话。
由于答案也取决于特定的分类器,我最感兴趣的是最大熵模型(liblinear)、支持向量机(libsvm)和感知器,但也欢迎适用于其他模型的答案。
algorithm - 指向一些好的 SVM 教程的指针
我一直在努力掌握支持向量机的基础知识,并下载并阅读了许多在线文章。但还是没能掌握。
我想知道,如果有一些
- 不错的教程
- 可用于理解的示例代码
或者你能想到的东西,这将使我能够轻松地学习 SVM 基础知识。
PS:我以某种方式设法学习了 PCA(主成分分析)。顺便说一句,你们会猜到我正在研究机器学习。
machine-learning - libsvm 模型文件格式
根据这个常见问题解答,libsvm 中的模型格式应该很简单。事实上,当我打电话给 just 时svm-train
。例如,a1a
数据集的第一个 SV 是
另一方面,如果我使用easy.py
脚本,我的第一个 SV 最终会是:
这是一个在我的训练集中根本不存在的实例!事实上,如果我这样做:
没有任何具有 119:-1 的实例(即使它只是+1
与交换-1
,也没有任何具有 119:1 和 118:1 的实例 - 缺少的属性为零)
如果我做这个源代码修改,我清楚地看到在前一种情况下(仅svm-train
涉及)第一个 SV 也是第一个实例。但是在后一种情况下(即使用easy.py
脚本),应该给我哪个实例是 SV 的输出被吃掉了grid.py
这里发生了什么?
machine-learning - 如何使用支持向量机 (SVM) 进行多类分类
在每本书和示例中,它们总是只显示二进制分类(两个类),并且新向量可以属于任何一个类。
这里的问题是我有 4 个类(c1、c2、c3、c4)。我有 4 个班级的训练数据。
对于新向量,输出应该是
C1 80%(获胜者)
c2 10%
c3 6%
c4 4%
这个怎么做?我打算使用 libsvm (因为它最流行)。我对此了解不多。如果你们中的任何人以前使用过它,请告诉我我应该使用的具体命令。
sed - libSVM 自动贴标机脚本
是否有任何脚本可以将制表符分隔的数据文件转换为 libSVM 数据格式?例如,我的未标记数据:
我想为每个值附加一个标签:
我相信这可以使用 sed 或 awk 来完成,但我只是不知道如何去做。
谢谢!
c - 如何从一个 C 程序中调用两个 C 程序?
如何从另一个 C 应用程序中调用两个 C 应用程序?
例如:
我想编写一个可以运行的程序:
结果相当于:
这里的 pg1 是 svm_scale ,这里的 pg2 是 svm_predict ,两者都取自 libsvm: http ://www.csie.ntu.edu.tw/~cjlin/libsvm/
[ 编辑 ]
@乔纳森,
我写了这些程序来尝试这个概念..
pg1.c
pg2.c
pg3.c:
有人可以解释我做错了什么吗?
machine-learning - 训练时间和在 libsvm 中使用 gamma 和 C 过拟合
我现在将 libsvm 用于具有高斯内核的支持向量机分类器。在它的网站上,它提供了一个 python 脚本 grid.py 来选择最好的 C 和 gamma。
我只是想知道训练时间和过拟合/欠拟合如何随 gamma 和 C 变化?
是否正确:
假设C从0变为+无穷大,训练出来的模型会从欠拟合到过拟合,训练时间增加?
假设 gamma 从几乎 0 变为 +infinity,训练后的模型会从欠拟合到过拟合,训练时间增加?
在 grid.py 中,默认的搜索顺序是 C 从小到大,但 gamma 从大到小。是为了训练时间从小到大,训练模型从欠拟合到过拟合吗?所以我们也许可以节省选择 C 和 gamma 值的时间?
谢谢并恭祝安康!
python - 这个python代码试图做什么
下面的python代码是以某种特殊的顺序遍历(c,g)的一个2D网格,存储在“jobs”和“job_queue”中。但是在尝试理解代码之后,我不确定它是哪种顺序。有人能够说出订单并为每个功能的目的提供一些解释吗?谢谢并恭祝安康!
编辑:
每个 (c,g) 都有一个值。代码其实就是在(c,g)的二维网格中搜索,找到值最小的网格点。我猜代码正在使用某种启发式搜索算法?原始代码在这里http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/gridsvr/gridregression.py,这是一个脚本,用于搜索 svm 算法两个参数 c 和 g 的最佳值,最小验证错误。
machine-learning - 使用 libsvm 进行分类训练
我想使用 libsvm 进行分类。我有 9 个训练集,每组有 144000 个标记实例,每个实例具有可变数量的特征。训练一组大约需要 12 个小时(带有概率估计的 ./svm-train )。由于我没有太多时间,我想一次跑多组。我不确定我是否能做到这一点。我可以在不同的终端同时运行所有 9 个进程吗?
(我正在使用 Fedora 核心 5)