我必须在sklearn中用逻辑回归训练一个模型。我到处看到结果必须是二进制的,但我的标签是好,坏或正常。我有12个特征,我不知道如何处理三个Labels?我非常感谢每一个答案
你可以使用 多项式Logistic回归.在python中,你可以修改你的Logistic回归代码为。
LogisticRegression(multi_class='multinomial').fit(X_train,y_train)
你可以看到 Logistic回归 在Scikit-Learn的文档中了解更多细节。
这就是所谓的onevs-all分类或多类分类。
从 sklearn.linear_model.LogisticRegression。:
在多类情况下,如果'multi_class'选项设置为'ovr',则训练算法使用onevs-rest(OvR)方案,如果'multi_class'选项设置为'multinomial',则使用交叉熵损失。(目前'multinomial'选项只被'lbfgs'、'sag'、'saga'和'newton-cg'求解器支持。)
代码示例:
# Authors: Tom Dupre la Tour <[email protected]>
# License: BSD 3 clause
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_blobs
from sklearn.linear_model import LogisticRegression
# make 3-class dataset for classification
centers = [[-5, 0], [0, 1.5], [5, -1]]
X, y = make_blobs(n_samples=1000, centers=centers, random_state=40)
transformation = [[0.4, 0.2], [-0.4, 1.2]]
X = np.dot(X, transformation)
for multi_class in ('multinomial', 'ovr'):
clf = LogisticRegression(solver='sag', max_iter=100, random_state=42,
multi_class=multi_class).fit(X, y)
# print the training scores
print("training score : %.3f (%s)" % (clf.score(X, y), multi_class))
检查完整的代码示例。绘制多项式和 "单对多 "回归图