4

LibSVM是否接受科学格式的浮点数?

具有...的功能。</p>

index: 4
value: 1.04515435733819E-05

…看起来像这样:

4:1.04515435733819E-05

我有一个很大的训练文件,里面充满了浮点值,它们的指数从-06+31.

(注:我关心的是特征值
的格式,我知道训练文件的格式,即label index:value index:value ...:)

我正在使用Visual C++ 2010 ,并且正在使用和类将其写入value文件。StringStreamWriter

4

1 回答 1

3

鉴于LibSVM ( v3.16 ) 使用stdlib'double strtod(const char *, char **)函数来读取特征值,它应该接受所有可以读取的符号strtod()

(顺便说一句,标签也是如此,如下面的代码片段所示,也可以是浮点数。)

有问题的代码可以在来自LibSVM的源代码分发void read_problem(const char *filename)svm-train.c文件中找到。

这是相关部分的精简版read_problem(...)

label = strtok(*line," \t\n");
problem->y[i] = strtod(label,&endptr);                 // document label
while (1) {
    idx = strtok(NULL,":");
    val = strtok(NULL," \t");
    (*x_space)[j].index = (int)strtol(idx,&endptr,10); // feature index
    (*x_space)[j].value = strtod(val,&endptr);         // feature value
    ++j;
}
于 2013-02-21T04:02:12.997 回答