逻辑回归中的多分类问题

2020-11-12 11:26:31 浏览数 (3)

一般情况下解决多分类问题有如下两种方式:

1)OvR (One vs Rest) 每次将某个与剩下的所有的分类,n个类别进行n次分类,选择分类得分最高的。

2). OvO (One vs One) 两两组合,比如四个类别有六个组,选择赢数最高的分类。

以下是sklearn中的使用(默认是OVR):

代码语言:javascript复制
from sklearn.linear_model import LogisticRegression

# 只使用前两种feature,方便可视化

X = iris.data[:,:2]
y = iris.target

X_train, X_test, y_train, y_test = train_test_split(X, y)

scikit_LR = LogisticRegression()

# 默认multi_class='ovr',即OVR
scikit_LR.fit(X_train, y_train)
scikit_LR.score(X_test, y_test)

修改为OVO: 修改 multi_class='multinomial';需要注意的是,solver也需要改变, scikit_learn不仅仅使用梯度下降法,默认是使用liblinear的,但是对于OVO是无效的。

代码语言:javascript复制
scikit_LR2 = LogisticRegression(multi_class='multinomial', solver='newton-cg')

scikit_LR2.fit(X_train, y_train)
scikit_LR2.score(X_test, y_test)

1 人点赞