逻辑回归_训练多元分类器
一对多
# 训练多元分类器
from sklearn.linear_model import LogisticRegression
from sklearn import datasets
from sklearn.preprocessing import StandardScaler
# 加载数据
iris = datasets.load_iris()
features = iris.data
target = iris.target
scaler = StandardScaler()
features_standardized = scaler.fit_transform(features)
# multi_class="ovr" 表示一对多的逻辑回归 另外一种是MLR 多元逻辑回归
logistic_regression = LogisticRegression(random_state=0, multi_class="ovr")
#logistic_regression_MNL = LogisticRegression(random_state=0, multi_class="multinomial")
# 训练模型
model = logistic_regression.fit(features_standardized, target)
Discussion
On their own, logistic regressions are only binary classifiers, meaning they cannot handle target vectors with more than two classes. However, two clever extensions to logistic regression do just that. First, in one-vs-rest logistic regression (OVR) a separate model is trained for each class predicted whether an observation is that class or not (thus making it a binary classification problem). It assumes that each observation problem (e.g. class 0 or not) is independent
Alternatively in multinomial logistic regression (MLR) the logistic function we saw in Recipe 15.1 is replaced with a softmax function:
P(yI=k|X)=eβkxi∑Kj=1eβjxi
P(yI=k|X)=eβkxi∑j=1Keβjxi
where P(yi=k|X)P(yi=k|X) is the probability of the ith observation's target value, yiyi , is class k, and K is the total number of classes. One practical advantage of the MLR is that its predicted probabilities using predict_proba method are more reliable
We can switch to an MNL by setting multi_class='multinomial'