From 25ad0332e7cbe21c2bea24730981d01683052693 Mon Sep 17 00:00:00 2001 From: zhi-bao Date: Thu, 6 Mar 2025 14:42:58 +0800 Subject: [PATCH] Fix the issue where primal solver cannot be used in libmultilabel. --- libmultilabel/linear/linear.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/libmultilabel/linear/linear.py b/libmultilabel/linear/linear.py index 7ea9b9b..fa26e48 100644 --- a/libmultilabel/linear/linear.py +++ b/libmultilabel/linear/linear.py @@ -5,7 +5,7 @@ import numpy as np import scipy.sparse as sparse -from liblinear.liblinearutil import train, problem, parameter +from liblinear.liblinearutil import train, problem, parameter, L2R_L2LOSS_SVC_DUAL, L2R_L1LOSS_SVC_DUAL from tqdm import tqdm __all__ = [ @@ -335,7 +335,8 @@ def _do_train(y: np.ndarray, x: sparse.csr_matrix, options: str) -> np.matrix: prob = problem(y, x) param = parameter(options) - param.w_recalc = True # only works for solving L1/L2-SVM dual + if param.solver_type in [L2R_L1LOSS_SVC_DUAL, L2R_L2LOSS_SVC_DUAL]: + param.w_recalc = True # only works for solving L1/L2-SVM dual with silent_stderr(): model = train(prob, param)