原文链接:http://tecdat.cn/?p=25583 

多项式逻辑回归 是逻辑回归的扩大,它减少了对多类分类问题的反对。

默认状况下,逻辑回归仅限于两类分类问题。一些扩大,能够容许将逻辑回归用于多类分类问题,只管它们要求首先将分类问题转换为多个二元分类问题。

相同,多项逻辑回归算法是逻辑回归模型的扩大,波及将损失函数更改为穿插熵损失,并将概率分布预测为多项概率分布,以原生反对多类分类问题。

在本教程中,您将理解如何在 Python 中开发多项逻辑回归模型。

实现本教程后,您将理解:

  • 多项逻辑回归是逻辑回归的扩大,用于多类分类。
  • 如何开发和评估多项逻辑回归并开发最终模型以对新数据进行预测。
  • 如何调整多项逻辑回归模型的惩办超参数。

教程概述

本教程分为三个局部:

  1. 多项逻辑回归
  2. 评估多项逻辑回归模型
  3. 多项 Logistic逻辑回归的调整惩办

多项逻辑Logistic回归

逻辑回归是一种分类算法。

它实用于具备数字输出变量和具备两个值或类的分类指标变量的数据集。这种类型的问题被称为二元分类问题。

逻辑回归是为两类问题设计的,应用二项式概率分布函数。对于正类或后果,类标签映射到 1,对于负类或后果,映射到 0。拟合模型预测示例属于第 1 类的概率。

默认状况下,逻辑回归不能用于具备两个以上类别标签的分类工作,即所谓的多类别分类。

相同,它须要批改以反对多类分类问题。

使逻辑回归适应多类分类问题的一种风行办法是将多类分类问题拆分为多个二元分类问题,并在每个子问题上拟合规范逻辑回归模型。

另一种办法波及更改逻辑回归模型以间接反对多个类别标签的预测。具体来说,预测输出示例属于每个已知类标签的概率。

定义多类概率的概率分布称为多项概率分布。实用于学习和预测多项概率分布的逻辑回归模型称为多项逻辑回归。同样,咱们能够将默认或规范逻辑回归称为二项式逻辑回归。

  • 二项式逻辑回归:规范逻辑回归,预测每个输出示例的二项式概率(即两个类别)。
  • 多项式逻辑回归:逻辑回归的批改版本,预测每个输出示例的多项概率(即多于两个类别)。

将逻辑回归从二项式概率改为多项式概率,须要扭转用于训练模型的损失函数(例如,将对数损失改为穿插熵损失),并将输入从繁多概率值改为每个类标签的一个概率。

当初咱们曾经相熟了多项逻辑回归,让咱们看看咱们如何在Python中开发和评估多项逻辑回归模型。

评估多指标Logistic回归模型

在本节中,咱们将应用Python机器学习库开发并评估一个多项逻辑回归模型。

首先,咱们将定义一个合成的多类分类数据集,作为根底。这是一个通用的数据集,当前你能够很容易地用你本人加载的数据集来替换。

classification()函数能够用来生成一个具备肯定数量的行、列和类的数据集。在这种状况下,咱们将生成一个具备1000行、10个输出变量或列和3个类的数据集。

上面的例子总结了数组的形态和三个类中的例子散布。

# 测试分类数据集import Counter# 定义数据集X, y = mclas# 对数据集进行总结print

运行这个例子,证实了数据集有1,000行和10列,正如咱们预期的那样,而且这些行大概平均地散布在三个类别中,每个类别中大概有334个例子。

scikit库反对Logistic回归。
将 "solver "参数设置为反对多指标逻辑回归的解算器,从而配置为多指标逻辑回归。

# 定义多项式逻辑回归模型modl = LoRe(muss)

多项式逻辑回归模型将应用穿插熵损失进行拟合,并将预测每个整数编码的类标签的整数值。

当初咱们曾经相熟了多项逻辑回归API,咱们能够看看如何在咱们的合成多类分类数据集上评估一个多项逻辑回归模型。

应用反复分层的k-fold穿插验证来评估分类模型是一个好的做法。分层确保了每个穿插验证折在每个类别中的例子的散布与整个训练数据集大致相同。

咱们将应用10个折的三次反复,这是一个很好的默认值,并且思考到类的均衡,应用分类精度来评估模型性能。

上面列出了评估多类分类的多项逻辑回归的残缺例子。

# 评估多指标Logistic回归模型from numpy import mean# 定义数据集X, y = makeclas# 定义多项式逻辑回归模型modl = LogReg# 定义模型的评估程序cv = RepeKFold# 评估模型并收集分数n_scores = crovalsc# 报告模型的性能print('Mean Accurac)

运行这个例子能够报告所有穿插验证和评估程序的反复的均匀分类准确率。

留神:鉴于算法或评估程序的随机性,或数字精度的差别,你的后果可能会有所不同。思考把这个例子运行几次,而后比拟均匀后果。

在这个例子中,咱们能够看到,在咱们的合成分类数据集上,带有默认惩办的多项逻辑回归模型获得了约68.1%的均匀分类精度。

咱们能够决定应用多项逻辑回归模型作为咱们的最终模型,并对新数据进行预测。

这能够通过首先在所有可用数据上拟合模型,而后调用predict()函数对新数据进行预测来实现。

上面的例子演示了如何应用多项逻辑回归模型对新数据进行预测。

# 用多指标逻辑回归模型进行预测from sklearn.datasets# 定义数据集X, y = makclas# 定义多项式逻辑回归模型model = LogRegr# 在整个数据集上拟合该模型fit(X, y)# 定义单行输出数据row # 预测类别标签predict(\[row\])# 对预测的类进行总结print('Predic

运行这个例子首先在所有可用的数据上拟合模型,而后定义一行数据,提供给模型,以便进行预测。

在这种状况下,咱们能够看到,模型对单行数据的预测是 "1 "类。

多项式逻辑回归的一个益处是,它能够预测数据集中所有已知类标签的校准概率。

这能够通过调用模型的predict_proba()函数来实现。

上面的例子演示了如何应用多项逻辑回归模型预测一个新例子的多项概率分布。

# 用多指标逻辑回归模型预测概率from sklea# 定义数据集X, y = makclassif# 定义多项式逻辑回归模型model = LoRegre# 在整个数据集上拟合该模型fit(X, y)# 定义单行输出数据# 预测一个多项式概率分布preprob# 对预测的概率进行总结print('Predict

运行这个例子首先在所有可用的数据上拟合模型,而后定义一行数据,将其提供给模型,以便预测类的概率。

留神:鉴于算法或评估程序的随机性,或数字精度的差别,你的后果可能会有所不同。思考将这个例子运行几次,并比拟均匀后果。

在这个例子中,咱们能够看到第1类(例如,数组索引被映射到类的整数值)的预测概率最大,约为0.50。

当初咱们曾经相熟了评估和应用多项逻辑回归模型,让咱们来摸索如何调整模型的超参数。

多项式Logistic回归的调整惩办

调整多项逻辑回归的一个重要超参数是惩办项。

这个项对模型施加惩办,寻求更小的模型权重。这是通过在损失函数中退出模型系数的加权和来实现的,激励模型在拟合模型的同时缩小权重的大小和误差。

一种风行的惩办类型是L2惩办,它将系数的平方之和(加权)退出到损失函数中。能够应用系数的加权,将惩办的强度从齐全惩办升高到十分轻微的惩办。

默认状况下,LogisticRegression类应用L2惩办,系数的权重设置为1.0。惩办的类型能够通过 "惩办 "参数设置,其值为 "l1"、"l2"、"elasticnet"(例如两者),只管不是所有的求解器都反对所有的惩办类型。惩办中的系数权重能够通过 "C "参数设置。

# 定义带有默认惩办的多项式逻辑回归模型Logistic

惩办的加权实际上是反加权,兴许惩办=1-C。

从文件中能够看出。

C : float, default=1.0

正则化强度的倒数,必须是一个正的浮点数。与反对向量机一样,较小的值示意较强的惩办。

这意味着,靠近1.0的值示意很少的惩办,靠近0的值示意强的惩办。C值为1.0可能示意基本没有惩办。

  • C靠近于1.0。轻惩办。
  • C靠近0.0:强惩办。
     
# 定义无惩办的多项式逻辑回归模型LogRegr( penal='none')

当初咱们曾经相熟了惩办,让咱们来看看如何摸索不同惩办值对多指标逻辑回归模型性能的影响。

在对数尺度上测试惩办值是很常见的,这样能够疾速发现对一个模型很无效的惩办尺度。一旦发现,在这个尺度上进一步调整可能是无益的。

咱们将在对数尺度上摸索加权值在0.0001到1.0之间的L2惩办,此外还有不惩办或0.0。

上面列出了评估多项逻辑回归的L2惩办值的残缺例子。

#调整多指标逻辑回归的正则化from numpy import mean# 获取数据集def getet():X, y = make_# 取得一个要评估的模型列表def ges():models = dict()#为模型创立名称# 在某些状况下敞开惩办# 在这种状况下没有惩办models\[key\] = LogisticReg penalty='none'models\[key\] = LogisticR penalty='l2'# 应用穿插验证法评估一个给定的模型def evamodel# 定义评估程序cv = RataifiFod# 评估模型scs= cssva_scre# 定义数据集X, y = gatet()# 取得要评估的模型 gt_dels()# 评估模型并存储后果for name, moel in mos.ims():# 评估模型并收集分数oes = evadel(model, X, y)# 存储后果rsts.appendnames.append# 总结# 绘制模型性能的比拟图

运行这个例子能够报告每个配置的均匀分类精度。

留神:鉴于算法或评估程序的随机性,或数字精度的差别,你的后果可能会有所不同。思考多运行几次这个例子,并比拟均匀后果。

在这个例子中,咱们能够看到,C值为1.0的最佳得分约为77.7%,这与不应用惩办达到雷同的得分是一样的。

为每种配置的准确度分数创立了一个盒须图,所有的图都并排显示在一个雷同比例的图上,以便间接比拟。

在这种状况下,咱们能够看到,咱们在这个数据集上应用的惩办越大(即C值越小),模型的性能就越差。

多项式Logistic回归的L2惩办与准确率的箱线图

概括

在本教程中,您理解了如何在 Python 中开发多项逻辑回归模型。

你有任何问题吗?
在上面的评论中提出您的问题,我会尽力答复。


最受欢迎的见解

1.R语言多元Logistic逻辑回归 利用案例

2.面板平滑转移回归(PSTR)剖析案例实现剖析案例实现")

3.matlab中的偏最小二乘回归(PLSR)和主成分回归(PCR)

4.R语言泊松Poisson回归模型剖析案例

5.R语言混合效应逻辑回归Logistic模型剖析肺癌

6.r语言中对LASSO回归,Ridge岭回归和Elastic Net模型实现

7.R语言逻辑回归、Naive Bayes贝叶斯、决策树、随机森林算法预测心脏病

8.python用线性回归预测股票价格

9.R语言用逻辑回归、决策树和随机森林对信贷数据集进行分类预测