找不到逻辑回归的最优停止精度?py案例惊掉你的下巴

文章详细描述了使用逻辑回归模型对银行贷款风险用户进行识别的过程,包括数据预处理、模型构建、参数优化和性能评估。作者通过实例展示了如何导入库、读取数据、划分数据集、调整tol参数以提高召回率,并提供了分类报告以评估模型性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、准备阶段

步骤1.

步骤2.

二、案例分析

1.案例:

2.数据表:

2.编写代码

1).导入库

2)读入数据

3)取出自变量与因变量

4)将数据集分为训练集和测试集

5)创建逻辑回归模型

6)拟合模型

7)存储交叉验证后的召回率

8)给出多个精度tol值,tol默认为1e-4

9)进行交叉验证

10)存储了交叉验证的召回率

11)对模型进行预测

12)计算准测率

13)分类报告,包含准确率、召回率、F1-score等指标。

3.代码结果:

三、总结


一、准备阶段

步骤1.

用win+R打开控制台

步骤2.

使用pip命令

pip install pandas#使用pip下载pandas库
pip install pandas#使用pip下载numpy库
pip install scikit-learn#使用pip下载scikit-learn库

二、案例分析

1.案例:

对银行的贷款风险用户识别

2.数据表:

data.xls(【免费】对银行的贷款风险用户识别资源-优快云文库

2.编写代码

1).导入库

首先,导入了所需的库,包括Pandas用于数据处理,sklearn.linear_model的LogisticRegression用于逻辑回归模型,sklearn.model_selection的train_test_split用于数据集划分,sklearn的metrics用于评估模型指标。

import pandas as pd#用于数据分析
from sklearn.linear_model import LogisticRegression#用于逻辑回归模型
#sklearn.model_selection库中的train_test_split函数用于数据集划分
from sklearn.model_selection import train_test_split
#sklearn的metrics用于评估模型指标
from sklearn import metrics
#用于交叉验证
from sklearn.model_selection import cross_val_score

2)读入数据

使用Pandas的read_excel函数读取了名为"data.xls"的Excel数据文件,并将其存储在名为"data"的DataFrame对象中。

data=pd.read_excel('./data.xls')#读入数据

3)取出自变量与因变量

从"data" DataFrame中,使用drop函数删除了名为"还款拖欠情况"的列,并将其赋值给变量"x",这里将x作为自变量。同时,将名为"还款拖欠情况"的列赋值给变量"y",即因变量。

#使用drop函数删除了名为"还款拖欠情况"的列,并将其赋值给变量"x"
x=data.drop('还款拖欠情况',axis=1)
#将名为"还款拖欠情况"的列赋值给变量"y"
y=data.还款拖欠情况

4)将数据集分为训练集和测试集

使用train_test_split函数将数据集划分为训练集和测试集。参数"test_size=0.2"表示将20%的数据作为测试集,"random_state=100"表示设置随机种子,以确保每次运行时划分结果一致。划分后的训练集和测试集分别赋值给"x_train_w"、"x_test_w"、"y_train_w"和"y_test_w"。

x_train_w,x_test_w,y_train_w,y_test_w =\
train_test_split(x,y,test_size=0.2,random_state=100)
#'\'的作用是连接下一行

train_test_split函数详见:

5)创建逻辑回归模型

创建了一个LogisticRegression对象"lr",使用参数"C=0.01"和"max_iter=100"对逻辑回归模型进行配置。参数"C"控制正则化强度,较小的值表示更强的正则化,"max_iter"表示最大的迭代次数。

#创建了一个LogisticRegression对象,C代表正则化强度,max_iter代表迭代次数
lr=LogisticRegression(C=0.01,max_iter=100)

逻辑回归模型详见:

6)拟合模型

使用训练数据集(x_train_w, y_train_w)对逻辑回归模型进行训练,即拟合模型。

lr.fit(x_train_w,y_train_w)#对逻辑回归模型进行训练,拟合模型

7)存储交叉验证后的召回率

创建了一个空列表scores用于存储交叉验证后的召回率。

scores=[]

8)给出多个精度tol值,tol默认为1e-4

定义了参数tol_param_range,其中包含了不同的tol参数值。

tol_param_range=[1e-4,1e-5,5e-5,1e-3]

9)进行交叉验证

进行了循环,对于每个tol参数值,创建了一个LogisticRegression对象 lr,设置了惩罚参数C为0.01,并进行了10折交叉验证。

z=1
for i in tol_param_range:
lr=LogisticRegression(C=0.01,tol=i,solver='lbfgs',max_iter=1000)
score=cross_val_score(lr,x_train_w,y_train_w,cv=10,scoring='recall')

10)存储了交叉验证的召回率

计算并存储了交叉验证的召回率,取平均值后将其添加到scores列表中,并输出当前循环的结果。

11)对模型进行预测

用训练好的模型对测试数据集(x_test_w)进行预测,将预测结果赋值给"pred"变量。

pred = lr.predict(x_test_w)#预测

12)计算准测率

使用模型的.score()方法计算测试集上的准确率,并将结果打印输出。

score = lr.score(x_test_w,y_test_w)#这里的score与线性回归的score方法不同
print(score)

13)分类报告,包含准确率、召回率、F1-score等指标。

混淆矩阵metrics详见:

使用sklearn的metrics库中的classification_report函数计算并打印输出测试集上的分类报告,包含准确率、召回率、F1-score等指标。

#classification_report函数计算并打印输出测试集上的分类报告,包含准确率、召回率、F1-score等指标
print(metrics.classification_report(y_test_w,pred))

3.代码结果:

三、总结

这段代码使用逻辑回归模型进行二分类任务,目标是找到具有最佳召回率的最优停止精度(tol参数)。

代码的主要步骤如下:

  1. 导入所需的库和模块。
  2. 从Excel文件中读取数据,并将其拆分为自变量和因变量。
  3. 将数据集拆分为训练集和测试集。
  4. 定义不同的tol参数值的范围。
  5. 使用交叉验证计算每个tol参数值下的模型召回率(recall)。
  6. 计算每个tol参数值召回率的平均值,并将结果存储在scores列表中。
  7. 输出每次交叉验证的召回率,并记录迭代次数。
  8. 根据召回率的平均值选择具有最高召回率的最优tol参数。
  9. 使用最优参数创建和训练逻辑回归模型。
  10. 对测试集进行预测。
  11. 打印召回率、分类报告等模型评估指标。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值