def nbsvm(base_clf, fit_scaler=None, transform_scaler='bin', multi_class='ovr'):
"""
NB-SVM classifier: pipeline of MNBScaler+base_clf wrapped in OneVsRestClassifier / OneVsOneClassifier to support
multiclass (MNBScaler supports only binary problems itself!).
:param base_clf: classifier to use after MNBScaler, LogisticRegression or LinearSVC are usually used
:param fit_scaler: look at MNBScaler class
:param transform_scaler: look at MNBScaler class
:param multi_class: ovr for OneVsRestClassifier, ovo for OneVsOneClassifier
:return: OneVsRestClassifier / OneVsOneClassifier
"""
mnb_scaler = MNBScaler(fit_scaler=fit_scaler, transform_scaler=transform_scaler)
pipe = Pipeline([('mnbscaler', mnb_scaler), ('clf', base_clf)])
if multi_class=='ovr':
return OneVsRestClassifier(pipe)
elif multi_class=='ovo':
return OneVsOneClassifier(pipe)
else:
raise ValueError('Unsuppported multi_class=%s, should be one of %r.' % (multi_class, ['ovr','ovo']))
评论列表
文章目录