gpt4 book ai didi

regression - C\C++ 中的 LIBLINEAR

转载 作者:行者123 更新时间:2023-11-30 05:48:20 24 4
gpt4 key购买 nike

我想在我的 C++ 源代码中直接使用 LIBLINEAR ( http://www.csie.ntu.edu.tw/~cjlin/liblinear )。虽然在 MATLAB/JAVA 等语言中使用它似乎很简单,但在 C 中似乎很难;例如,阅读 README 文件,似乎我必须将每个数据矩阵转换为特定的链表格式;来自自述文件

`x' is an array 
of pointers, each of which points to a sparse representation (array
of feature_node) of one training vector.

For example, if we have the following training data:

LABEL ATTR1 ATTR2 ATTR3 ATTR4 ATTR5
----- ----- ----- ----- ----- -----
1 0 0.1 0.2 0 0
2 0 0.1 0.3 -1.2 0
1 0.4 0 0 0 0
2 0 0.1 0 1.4 0.5
3 -0.1 -0.2 0.1 1.1 0.1

and bias = 1, then the components of problem are:

l = 5
n = 6

y -> 1 2 1 2 3

x -> [ ] -> (2,0.1) (3,0.2) (6,1) (-1,?)
[ ] -> (2,0.1) (3,0.3) (4,-1.2) (6,1) (-1,?)
[ ] -> (1,0.4) (6,1) (-1,?)
[ ] -> (2,0.1) (4,1.4) (5,0.5) (6,1) (-1,?)
[ ] -> (1,-0.1) (2,-0.2) (3,0.1) (4,1.1) (5,0.1) (6,1) (-1,?)

所以,似乎我不能直接使用矩阵,相反,我必须制作这个 feature_node 的大链表;不存在更简单的系统或任何示例 s.t.我可以用更简单的方式做到这一点吗?

最佳答案

我不确定自您发布此文档以来文档是否已更改,但我使用了另一个问题 [ here 中显示的方法] ] 我将问题值加载到这样的矩阵中,而不是重写我的输入文件以匹配格式。 (我逐行解析文件并以逗号分隔,然后存储在名为 myData 的二维数组中):

struct svm_problem prob;
struct svm_node *x_space;

prob.l = problemSize;

svm_node** x = Malloc(svm_node*, prob.l);

for (int row = 0; row < prob.l; row++)
{
svm_node* x_space = Malloc(svm_node,4);
for (int col = 0; col < 4; col++)
{
x_space[col].index = col;
x_space[col].value = myData[row][col];
}
x_space[4].index = -1;
x[row] = x_space;
}

prob.x = x;

它似乎运作良好,至少满足我的需要。我不太清楚这是否能解决您的问题(也许晚了几年)。

希望对其他人也有用。

关于regression - C\C++ 中的 LIBLINEAR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28240062/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com