关于数据挖掘:Python多项式Logistic逻辑回归进行多类别分类和交叉验证准确度箱线图可视化

56次阅读

共计 4524 个字符,预计需要花费 12 分钟才能阅读完成。

原文链接: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.append

names.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 语言用逻辑回归、决策树和随机森林对信贷数据集进行分类预测

正文完
 0