0

我有一个训练有素的 ShareBoost 模型。如何获得模型的权重参数/向量?

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

此外,即使 C++ ShareBoost 类是 的子类,从(请参阅文档CMachine)获得的对象似乎没有可用的参数。Parametersm_parameters

以下代码是我尝试过的。

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)
4

1 回答 1

1

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

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

由于您目前使用的是 python API,因此只有在使用 shogun 的新 API(仅在开发分支 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

于 2018-06-09T09:22:16.243 回答