我试图liblinear
在C ++中工作,但是对库的调用train(problem*, parameter*)
将输出发送到终端。有时它说优化已完成,而其他时候似乎正在输出内部状态(为什么?)。此输出是什么意思,有可能抑制它或将其转移到某处的日志中吗?我boost::log
在程序的其余部分中使用,并且我想控制程序显示的内容。我正在Ubuntu 12.10上运行它。
示例输出:
iter 1 act -6.742e-01 pre 1.191e-02 delta 3.443e-02 f 5.940e-02 |g| 1.730e-01 CG 1 cg reaches trust region boundary iter 1 act -3.040e-02 pre 5.211e-03 delta 8.607e-03 f 5.940e-02 |g| 1.730e-01 CG 1 cg reaches trust region boundary iter 1 act 5.453e-04 pre 1.442e-03 delta 6.791e-03 f 5.940e-02 |g| 1.730e-01 CG 1 cg reaches trust region boundary iter 2 act 6.299e-04 pre 5.985e-04 delta 8.812e-03 f 5.886e-02 |g| 2.525e-01 CG 2 cg reaches trust region boundary iter 3 act 2.610e-04 pre 2.449e-04 delta 1.583e-02 f 5.823e-02 |g| 4.313e-02 CG 2 iter 4 act 1.510e-04 pre 1.585e-04 delta 1.583e-02 f 5.796e-02 |g| 2.927e-02 CG 4
要么
..* optimization finished, #iter = 25 Objective value = -0.332340 nSV = 173
对于train
调用,我的参数是:
solver_type = L2R_L2LOSS_SVR eps = 0.001 C = 0.02 nr_weight = 0 weight_label = nullptr weight = nullptr p = 0.005
我的输入数据有大约10,000〜100,000个数据点,每个数据点有62个特征。
另外,输出模型有124个权重。我假设正标记代表的集合的权重为62,负标记代表的权重是62?我怎么知道他们的顺序?model->label
是NULL
为了我的solver_type
。