逻辑回归模型及算法实例

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
实时数仓Hologres,5000CU*H 100GB 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
简介: 欢迎关注我的微信公众号: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卡(贷后,催收评分卡),对应特征变量不全相同,但评分方法大致相同。

目录
打赏
0
1
1
0
32
分享
相关文章
AI训练师入行指南(三):机器学习算法和模型架构选择
从淘金到雕琢,将原始数据炼成智能珠宝!本文带您走进数字珠宝工坊,用算法工具打磨数据金砂。从基础的经典算法到精密的深度学习模型,结合电商、医疗、金融等场景实战,手把手教您选择合适工具,打造价值连城的智能应用。掌握AutoML改装套件与模型蒸馏术,让复杂问题迎刃而解。握紧算法刻刀,为数字世界雕刻文明!
35 6
基于CS模型和CV模型的多目标协同滤波跟踪算法matlab仿真
本项目基于CS模型和CV模型的多目标协同滤波跟踪算法,旨在提高复杂场景下多个移动目标的跟踪精度和鲁棒性。通过融合目标间的关系和数据关联性,优化跟踪结果。程序在MATLAB2022A上运行,展示了真实轨迹与滤波轨迹的对比、位置及速度误差均值和均方误差等关键指标。核心代码包括对目标轨迹、速度及误差的详细绘图分析,验证了算法的有效性。该算法结合CS模型的初步聚类和CV模型的投票机制,增强了目标状态估计的准确性,尤其适用于遮挡、重叠和快速运动等复杂场景。
扩散模型=进化算法!生物学大佬用数学揭示本质
在机器学习与生物学交叉领域,Tufts和Harvard大学研究人员揭示了扩散模型与进化算法的深刻联系。研究表明,扩散模型本质上是一种进化算法,通过逐步去噪生成数据点,类似于进化中的变异和选择机制。这一发现不仅在理论上具有重要意义,还提出了扩散进化方法,能够高效识别多解、处理高维复杂参数空间,并显著减少计算步骤,为图像生成、视频合成及神经网络优化等应用带来广泛潜力。论文地址:https://arxiv.org/pdf/2410.02543。
63 21
单纯接入第三方模型就无需算法备案了么?
随着人工智能的发展,企业接入第三方模型提升业务能力的现象日益普遍,但算法备案问题引发诸多讨论。根据相关法规,无论使用自研或第三方模型,只要涉及向中国境内公众提供算法推荐服务,企业均需履行备案义务。这不仅因为服务性质未变,风险依然存在,也符合监管要求。备案内容涵盖模型基本信息、算法优化目标等,且需动态管理。未备案可能面临法律和运营风险。建议企业提前规划、合规管理和积极沟通,确保合法合规运营。
机器学习算法的优化与改进:提升模型性能的策略与方法
机器学习算法的优化与改进:提升模型性能的策略与方法
546 13
机器学习算法的优化与改进:提升模型性能的策略与方法
基于模糊PI控制算法的龙格库塔CSTR模型控制系统simulink建模与仿真
本项目基于MATLAB2022a,采用模糊PI控制算法结合龙格-库塔方法,对CSTR模型进行Simulink建模与仿真。通过模糊控制处理误差及变化率,实现精确控制。核心在于将模糊逻辑与经典数值方法融合,提升系统性能。
基于HMM隐马尔可夫模型的金融数据预测算法matlab仿真
本项目基于HMM模型实现金融数据预测,包括模型训练与预测两部分。在MATLAB2022A上运行,通过计算状态转移和观测概率预测未来值,并绘制了预测值、真实值及预测误差的对比图。HMM模型适用于金融市场的时间序列分析,能够有效捕捉隐藏状态及其转换规律,为金融预测提供有力工具。
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
手写数字识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Flask框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
227 0
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
蔬菜识别系统,本系统使用Python作为主要编程语言,通过收集了8种常见的蔬菜图像数据集('土豆', '大白菜', '大葱', '莲藕', '菠菜', '西红柿', '韭菜', '黄瓜'),然后基于TensorFlow搭建卷积神经网络算法模型,通过多轮迭代训练最后得到一个识别精度较高的模型文件。在使用Django开发web网页端操作界面,实现用户上传一张蔬菜图片识别其名称。
248 0
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
青否数字人声音克隆算法升级,16个超真实直播声音模型免费送!
青否数字人的声音克隆算法全面升级,能够完美克隆真人的音调、语速、情感和呼吸。提供16种超真实的直播声音模型,支持3大AI直播类型和6大核心AIGC技术,60秒快速开播,助力商家轻松赚钱。AI讲品、互动和售卖功能强大,支持多平台直播,确保每场直播话术不重复,智能互动和真实感十足。新手小白也能轻松上手,有效规避违规风险。