我正在尝试使用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
。