逻辑回归模型及算法实例

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
实时数仓Hologres,5000CU*H 100GB 3个月
简介: 欢迎关注我的微信公众号:Python学习杂记

逻辑回归模型在很多领域都有应用,比如:

  • 病人是否患病(阴性、阳性)
  • 客户未来违约情况(违约、不违约)
  • 客户流失预测
  • 企业经营风险预测
  • 等等其他。。。。

逻辑回归(Logistic Regression)是一种用于解决二分类问题的机器学习方法,用于估计某种事物的可能性。逻辑回归是一个分类算法而不是回归算法。通常是利用已知的自变量来预测一个离散型因变量的值(像二进制值0/1,是/否,真/假)。它就是通过拟合一个逻辑函数(logit fuction)来预测一个事件发生的概率。

逻辑回归模型搭架步骤


  • 1.构建数据框

  • 2.特征工程(分箱)

  • 3.搭建机器学习框架

在此处进行了标准化,标准化放在第二步和第三步都可以。

  • 4.搭架逻辑回归模型并评估模型

  • 5.逻辑回归模型应用测试
def ppp_pjb(x0,x1,x2,x3,x4,x5,x6):
      B=pd.DataFrame([x0,x1,x2,x3,x4,x5,x6]).T
      B.columns =df1.iloc[:,0:7].columns
      dfn=pd.concat([df1.iloc[:,0:7],B],ignore_index=True)
      dfn['地区'] =dfn['地区'].replace({'北京':3,'上海':3,'浙江':2,'江苏':2 ,'安徽':1,'江西':1,'河南':1,'湖北':1})
      dfn['性别'] =dfn['性别'].replace({'男':1,'女':0})
      dfn['学历'] =dfn['学历'].replace({'专科及以下':1,'本科':2,'硕士及以上':3})
      dfn.收入=pd.cut(dfn.收入,[0,100000,200000,300000,1000000],labels=[1,2,3,4])
      dfn.年龄=pd.cut(dfn.年龄,[0,30,40,60],labels=[1,2,3])
      dfn.历史授信额度=pd.cut(dfn.历史授信额度,[0,40000,70000,200000],labels=[1,2,3]) 
      from sklearn.model_selection import train_test_split  
      minmax = preprocessing.MinMaxScaler()# 标准化处理
      Xn= minmax.fit_transform(dfn)
      if model.predict([ Xn[-1]])[0]==1:
          return  print('基础信息:【'+'地区:'+x0+',收入:'+str(x1)+',年龄:'+str(x2)+',性别:'+x3+',历史授信额度:'+str(x4)+
                        ',学历:'+x5+',历史违约次数:'+str(x6)+'】'+'\n'+'预测结果:【违约,'+'模型测算违约率为'+
                          str(round(model.predict_proba(Xn)[-1][1],2))+'】')              
      else:
          return  print('基础信息:【'+'地区:'+x0+',收入:'+str(x1)+',年龄:'+str(x2)+',性别:'+x3+',历史授信额度:'+str(x4)+
                        ',学历:'+x5+',历史违约次数:'+str(x6)+'】'+'\n'+'预测结果:【不违约,'+'模型测算违约率为'+
                        str(round(model.predict_proba(Xn)[-1][1],2))+'】')

  • 6.完整代码
import pandas as pd
from sklearn import preprocessing
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import roc_auc_score, roc_curve
import matplotlib.pyplot as plt
df= pd.read_excel('客户信息及违约情况new.xlsx')
df['地区'] =df['地区'].replace({'北京':3,'上海':3,'浙江':2,'江苏':2 ,'安徽':1,'江西':1,'河南':1,'湖北':1})
df['性别'] =df['性别'].replace({'男':1,'女':0})
df['学历'] =df['学历'].replace({'专科及以下':1,'本科':2,'硕士及以上':3})
df.收入=pd.cut(df.收入,[0,100000,200000,300000,1000000],labels=[1,2,3,4])
df.年龄=pd.cut(df.年龄,[18,30,40,60],labels=[1,2,3])
df.历史授信额度=pd.cut(df.历史授信额度,[0,40000,70000,100000],labels=[1,2,3])
X = df.iloc[:,0:7] #取7列为特征变量
y = df['是否违约'] #目标变量
Xtrain, Xtest, ytrain, ytest = train_test_split(X, y, test_size=0.2, random_state=3)  # 划分训练集和测试集
#Max-Min标准化 (离差标准化)
#建立MinMaxScaler对象
minmax = preprocessing.MinMaxScaler()
# 标准化处理
Xtrainb= minmax.fit_transform(Xtrain)
Xtestb = minmax.fit_transform(Xtest)
model = LogisticRegression()
model.fit(Xtrainb, ytrain)
print('测试集预测准确率:',model.score(Xtestb, ytest))#查看预测准确度
ypred_proba = model.predict_proba(Xtestb)
fpr, tpr, thres = roc_curve(ytest, ypred_proba[:, 1])
plt.figure(figsize=(10,7))
plt.rcParams['font.sans-serif'] = ['SimHei']  # 设置中文
plt.plot(fpr, tpr)  # 通过plot()函数绘制折线图
plt.title('ROC曲线',fontsize=20)  # 添加标题
plt.xlabel('FPR',fontsize=20)  # 添加X轴标签
plt.ylabel('TPR',fontsize=20)  # 添加Y轴标
plt.tick_params(labelsize=20)
print('AUC:',round(roc_auc_score(ytest, ypred_proba[:,1]),2))
print('系数:',[round(model.fit(Xtrainb, ytrain).coef_[0][i],2) for i in range(7)],'\n截距项:',round(model.intercept_[0],2))

运行结果

  • 7.模型的延伸(评分卡模型)

本文介绍的只是逻辑回归的一个简化案例,实际上实际业务中比本案例要复杂。各大银行使用的评分卡模型也是由逻辑回归模型搭架,但其对逻辑回归进行了进一步优化,其优化的步骤如下:

1)在特征工程部分,对特征进行分箱,与总样本对比,计算woe编码,最终计算信息权重IV,根据信息权重筛选出权重占比较大的特征变量。

2)评分方法:先给一个基础分,评分按照每个特征值分箱相对于总样本的偏差 (ODDS,好坏比)相应的扣分和加分。

3)一般分为A卡(贷前,申请评分卡)、B卡(贷中,行为评分卡)、C卡(贷后,催收评分卡),对应特征变量不全相同,但评分方法大致相同。

目录
相关文章
|
18天前
|
机器学习/深度学习 人工智能 算法
鸟类识别系统Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+ResNet50算法模型+图像识别
鸟类识别系统。本系统采用Python作为主要开发语言,通过使用加利福利亚大学开源的200种鸟类图像作为数据集。使用TensorFlow搭建ResNet50卷积神经网络算法模型,然后进行模型的迭代训练,得到一个识别精度较高的模型,然后在保存为本地的H5格式文件。在使用Django开发Web网页端操作界面,实现用户上传一张鸟类图像,识别其名称。
64 12
鸟类识别系统Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+ResNet50算法模型+图像识别
|
1月前
|
存储 自然语言处理 算法
【算法精讲系列】MGTE系列模型,RAG实施中的重要模型
检索增强生成(RAG)结合检索与生成技术,利用外部知识库提升大模型的回答准确性与丰富性。RAG的关键组件包括文本表示模型和排序模型,前者计算文本向量表示,后者进行精细排序。阿里巴巴通义实验室推出的GTE-Multilingual系列模型,具备高性能、长文档支持、多语言处理及弹性向量表示等特性,显著提升了RAG系统的检索与排序效果。该系列模型已在多个数据集上展示出优越性能,并支持多语言和长文本处理,适用于各种复杂应用场景。
|
1月前
|
自然语言处理 监控 算法
【算法精讲系列】通义模型Prompt调优的实用技巧与经验分享
本文详细阐述了Prompt的设计要素,包括引导语、上下文信息等,还介绍了多种Prompt编写策略,如复杂规则拆分、关键信息冗余、使用分隔符等,旨在提高模型输出的质量和准确性。通过不断尝试、调整和优化,可逐步实现更优的Prompt设计。
|
1月前
|
算法
基于SIR模型的疫情发展趋势预测算法matlab仿真
该程序基于SIR模型预测疫情发展趋势,通过MATLAB 2022a版实现病例增长拟合分析,比较疫情防控力度。使用SIR微分方程模型拟合疫情发展过程,优化参数并求解微分方程组以预测易感者(S)、感染者(I)和移除者(R)的数量变化。![]该模型将总人群分为S、I、R三部分,通过解析或数值求解微分方程组预测疫情趋势。
|
1月前
|
机器学习/深度学习 数据采集 存储
一文读懂蒙特卡洛算法:从概率模拟到机器学习模型优化的全方位解析
蒙特卡洛方法起源于1945年科学家斯坦尼斯劳·乌拉姆对纸牌游戏中概率问题的思考,与约翰·冯·诺依曼共同奠定了该方法的理论基础。该方法通过模拟大量随机场景来近似复杂问题的解,因命名灵感源自蒙特卡洛赌场。如今,蒙特卡洛方法广泛应用于机器学习领域,尤其在超参数调优、贝叶斯滤波等方面表现出色。通过随机采样超参数空间,蒙特卡洛方法能够高效地找到优质组合,适用于处理高维度、非线性问题。本文通过实例展示了蒙特卡洛方法在估算圆周率π和优化机器学习模型中的应用,并对比了其与网格搜索方法的性能。
175 1
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
【深度学习】探讨最新的深度学习算法、模型创新以及在图像识别、自然语言处理等领域的应用进展
深度学习作为人工智能领域的重要分支,近年来在算法、模型以及应用领域都取得了显著的进展。以下将探讨最新的深度学习算法与模型创新,以及它们在图像识别、自然语言处理(NLP)等领域的应用进展。
95 6
|
2月前
|
机器学习/深度学习 自然语言处理 负载均衡
揭秘混合专家(MoE)模型的神秘面纱:算法、系统和应用三大视角全面解析,带你领略深度学习领域的前沿技术!
【8月更文挑战第19天】在深度学习领域,混合专家(Mixture of Experts, MoE)模型通过整合多个小型专家网络的输出以实现高性能。从算法视角,MoE利用门控网络分配输入至专家网络,并通过组合机制集成输出。系统视角下,MoE需考虑并行化、通信开销及负载均衡等优化策略。在应用层面,MoE已成功应用于Google的BERT模型、Facebook的推荐系统及Microsoft的语音识别系统等多个场景。这是一种强有力的工具,能够解决复杂问题并提升效率。
57 2
|
2月前
|
算法 语音技术
支付宝商业化广告算法问题之在ODL模型优化过程中,采取什么策略来提高模型的泛化能力呢
支付宝商业化广告算法问题之在ODL模型优化过程中,采取什么策略来提高模型的泛化能力呢
|
2月前
|
机器学习/深度学习 人工智能 算法
【人工智能】线性回归模型:数据结构、算法详解与人工智能应用,附代码实现
线性回归是一种预测性建模技术,它研究的是因变量(目标)和自变量(特征)之间的关系。这种关系可以表示为一个线性方程,其中因变量是自变量的线性组合。
53 2
|
2月前
|
机器学习/深度学习 算法 搜索推荐
支付宝商业化广告算法问题之在DNN模型中,特征的重要性如何评估
支付宝商业化广告算法问题之在DNN模型中,特征的重要性如何评估
下一篇
无影云桌面