在 Python 中使用 sklearn 中的“OneVsRestClassifier”将自定义的二元分类调整为多类分类

数据挖掘 Python scikit-学习 多类分类
2022-02-27 14:58:03

我有二进制分类方法名称 Fclassifier 我需要将它应用于多类分类问题,这个分类器没有任何决策函数(或预测概率),它的核心只接受 {1,-1} 作为类标签!我正在尝试使用sklearn中的 OneVsRestClassifier多分类器,以便我可以将 Fclassifier 调整为多类分类器:

fm = FClassification(n_iter=1000, init_stdev=0.1, rank=2, random_state=123,l2_reg_w=0, l2_reg_V=0, l2_reg=0, step_size=0.1)
OneVsRestClassifier(fm).fit(X_train,y_train)

但我面临以下错误:

RuntimeError: Cannot clone object FClassification(init_stdev=0.1, l2_reg=None, l2_reg_V=0, l2_reg_w=0, n_iter=1000, random_state=123, rank=2, step_size=0.1),因为构造函数似乎没有设置参数 l2_reg_V

您认为是否是Fclassifier的问题不能满足OneVsRestClassifier的期望,我是否应该定义一个自定义的predict_proba可以将我的数据适合分类器以解决问题?或者如果错误可能有其他原因和解决方案?

1个回答

嗨,您需要实现get_params方法来导出所有超参数或继承您的分类器,sklearn.base.BaseEstimator因为在引擎盖下OneVsRestClassifier,每个分类器都在分发。所以你的分类器正在被克隆。