从 Shogun Shareboost 模型获取权重参数

Get weight parameters from Shogun Shareboost model

我有一个经过训练的 ShareBoost 模型。如何获取模型的权重parameters/vectors?

我试图获取单独的线性机器并提取单独的权重向量,但与 linear svm 不同的是,它似乎没有 get_w() 方法。

此外,即使 C++ ShareBoost class 是 CMachine 的子 class,从 m_parameters 获得的 Parameters 对象(参见 docs) 似乎没有可用的参数。

下面的代码是我试过的。

num_machines = shareboost.get_num_machines()
# num_machines = 2

lm0 = shareboost.get_machine(0)
p0 = lm0.m_parameters

# The following method does not exist
p0.get_parameter(0)

如果您使用的是 C++ API,您可以通过以下方式获得权重向量:

auto lm = (CLinearMachine*)shareboost->get_machine(0);
lm->get_w();

因为你目前使用的是 python API 只有当你使用新的 API of shogun 时才有可能(仅在开发分支 atm 中可用):

lm0 = shareboost.get_machine(0)
weights = lm0.get_real_vector("w")

查看更多有关如何使用新 API 的示例: http://shogun.ml/examples/nightly/examples/binary/linear_support_vector_machine.html