AI 助理
备案 控制台
开发者社区 开发与运维 文章 正文

小白如何写Python算法-计算模型稳定性评估指标PSI(下)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
推荐场景:
学生管理系统数据库设计 搭建个人博客
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 小白如何写Python算法-计算模型稳定性评估指标PSI(下)

计算出得到KL散度

image.png

由上式可知

相对熵KL(A||C) > KL(A||B)
说明A和B之间的概率分布在信息量角度更为接近
而通过概率分布可视化观察,也认为A和B更为接近,两者吻合


相对熵与PSI之间的关系


PSI公式变形

image.png

将PSI计算公式变形后可以分解为2项


image.png

结论

  • PSI本质上是实际分布(A)与预期分布(E)的KL散度的一个对称化操作
  • 双向计算相对熵,并把两部分相对熵相加,从而更为全面地描述两个分布的差异

image.png


PSI指标的业务应用


实际评估需要分不同粒度

  • 时间粒度(按月、按样本集)
  • 订单层次(放贷层、申请层)
  • 人群(若没有分群建模,可忽略)

时间窗

时间窗尽可能至今为止
有可能建模时间窗稳定
但近期时间窗出现不稳定

评估过程

  • 先在放贷样本上计算PSI,剔除不稳定的特征;
  • 再对申请样本抽样(可能数据太大)
  • 计算PSI再次筛选

建议先看变量数据分布(EDD)

PSI只是一个宏观的指标
建议先看变量数据分布(EDD)
看分位数跨时间变化来检验数据质量

PSI计算细节也予以保留

无法得知PSI上升时,数据分布是左偏还是右偏
建议把PSI计算细节也予以保留
便于在模型不稳定时,第一时间排查问题


PSI源码


https://gitee.com/pingfanrenbiji/population-stability-index-argo/blob/master/psi.py

image.png

结合具体业务实现需求


经过上面的学习 咱们已经知道了PSI是个什么玩意了
而且还有了实现好的算法源码
该算法需要2方面的数据 
一个是实际数据(训练数据)
实际数据即是训练数据集中的标签列 
比如贷款数据样本 
标签列为是否按时还款
另一个是预期数据(预测数据根据模型得到的预测结果)
预期样本是
根据训练出来的模型
对于即将要贷款的用户进行预测是否会还款
接下来就要结合自己公司的业务来得到这块数据调用算法就可以了


搭建python服务

公司让我来做psi
因为我是用java开发的嘛 
其实是想让我用java来实现psi
我当时就感觉不太合理 java不合适写算法
后来的调研也确认了这个想法
算法还是得需要用ptyhon来写
且都已经实现好了 理解了原理之后 
直接就可以用了
用python写的话 对于写java的我来说
有点难度 但稍微克服一下就可以了


python web框架 flask

源码demo
https://gitee.com/pingfanrenbiji/simple-model-monitor-demo

基本语法记录一下
  • restful api
from flask_restful import reqparse, abort, Api, Resource
@app.route('/test/<jobid>', methods=['POST'])
def test_psi_last(jobid):
    return "成功"


注意:参数用<> 而非{}

  • sql查询语句执行 返回元组类型
import pymysql
 jobid = '1111111'
 # 创建数据库连接
 conn = pymysql.connect(
        host=mysql_host,
        user=mysql_user,
        password=mysql_password,
        db=mysql_db,
        port=mysql_port
 )
# 获取操作游标,也就是开始操作
cur = conn.cursor() 
# 定义查询sql语句 该sql返回一条数据
sql = """
      select id from studio_algor_param_record where job_no=%s order by createtime desc limit 1;
    """
#执行查询
cur.execute(sql, (jobid))
# 获取查询结果
mid = cur.fetchall()
#关闭连接
conn.close()
# mid是tuple元组数据类型((xxxx,))
res_list = [x[0] for x in mid]
# 获取xxxx字符串
mid = res_list[0]
  • 通过pandas执行sql查询返回dataframe类型
# 数据库连接的获取同上
# 查询sql语句 返回list集合
sql = 'select predict_result from studio_model_predict_result where mid =\'' + mid + '\''
# 通过pandas执行sql语句得到dataframe类型的数据结果
df = pd.read_sql(sql, con=conn)
  • 插入sql
# 数据库连接的获取同上
# 获取操作游标,也就是开始操作
cur = conn.cursor() 
# 插入sql语句
sql = """
      insert into studio_job_step_files (id,jobid,file_type,path,remark)
      values (%s,%s,%s,%s,%s)
    """
# 生成uuid唯一id
id = str(uuid.uuid1()).replace('-', '')
# 执行sql
cur.execute(sql, (id, jobid, '100', py_test, result))
# 提交事务
conn.commit()
# 关闭连接
conn.close()
  • 使用alluxo(内存文件系统)

alluxio client源码

https://gitee.com/pingfanrenbiji/simple-model-monitor-demo/tree/master/alluxio

连接alluxio

import alluxio
client = alluxio.Client(alluxio_ip, alluxio_port)

获取文件

got = None
# alluxio文件路径
path = "/poc/d1e5a1efbe764f9d80b200d3a90c5bdf"
with client.open(path, 'r') as f:
  got = f.read()

写入本地文件

# 本地文件路径
py_test_csv = "test.csv"
# 将读取到的alluxio文件写入本地文件
with open(py_test_csv, 'w') as f:
  f.write(got.decode('utf-8'))
注:write方法需要字符串类型的参数
got是字节流类型 通过decode解码得到字符串类型

读取csv文件得到dataframe类型的数据

df = pd.read_csv(py_test_csv, sep=",")
# 获取执行列
df['y']

上传文件

# 将dataframe类型的数据写入alluxio文件
# result_detail是dataframe类型的数据
with client.open(py_test, 'w') as f:
f.write(bytes(result_detail.to_json().encode("utf8")))


后记


上述过程花了2天时间
从对PSI概念不了解到慢慢了解
没有写过Python工程的代码 连if else语法都要现学 到学会使用Python语言解决问题
所以呀
要相信自己的潜力 
以解决问题为目标 不断学习相关的知识
想办法使用能够使用的资源 
你一定可以战胜它的


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
平凡人笔记
目录
相关文章
qa浪涛
|
5天前
|
算法 前端开发 数据处理
小白学python-深入解析一位字符判定算法
小白学python-深入解析一位字符判定算法
qa浪涛
17 0
Echo_Wish
|
4天前
|
机器学习/深度学习 TensorFlow 算法框架/工具
使用Python实现深度学习模型:智能质量检测与控制
使用Python实现深度学习模型:智能质量检测与控制 【10月更文挑战第8天】
Echo_Wish
87 62
使用Python实现深度学习模型:智能质量检测与控制
SoraLuna
|
2天前
|
Python
【10月更文挑战第10天】「Mac上学Python 19」小学奥数篇5 - 圆和矩形的面积计算
本篇将通过 Python 和 Cangjie 双语解决简单的几何问题:计算圆的面积和矩形的面积。通过这道题,学生将掌握如何使用公式解决几何问题,并学会用编程实现数学公式。
SoraLuna
108 60
zzy的aly
|
6天前
|
存储 机器学习/深度学习 算法
蓝桥杯练习题(三):Python组之算法训练提高综合五十题
蓝桥杯Python编程练习题的集合,涵盖了从基础到提高的多个算法题目及其解答。
zzy的aly
15 3
蓝桥杯练习题(三):Python组之算法训练提高综合五十题
zzy的aly
|
6天前
|
机器学习/深度学习 数据可视化 Python
Python实用记录(三):通过netron可视化模型
使用Netron工具在Python中可视化神经网络模型,包括安装Netron、创建文件和运行文件的步骤。
zzy的aly
11 2
Python实用记录(三):通过netron可视化模型
土木林森
|
1天前
|
机器学习/深度学习 算法 Python
深度解析机器学习中过拟合与欠拟合现象:理解模型偏差背后的原因及其解决方案,附带Python示例代码助你轻松掌握平衡技巧
【10月更文挑战第10天】机器学习模型旨在从数据中学习规律并预测新数据。训练过程中常遇过拟合和欠拟合问题。过拟合指模型在训练集上表现优异但泛化能力差,欠拟合则指模型未能充分学习数据规律,两者均影响模型效果。解决方法包括正则化、增加训练数据和特征选择等。示例代码展示了如何使用Python和Scikit-learn进行线性回归建模,并观察不同情况下的表现。
土木林森
11 3
Echo_Wish
|
2天前
|
机器学习/深度学习 传感器 数据采集
使用Python实现深度学习模型:智能设备故障预测与维护
【10月更文挑战第10天】 使用Python实现深度学习模型:智能设备故障预测与维护
Echo_Wish
39 2
土木林森
|
1天前
|
机器学习/深度学习 数据挖掘 Serverless
手把手教你全面评估机器学习模型性能:从选择正确评价指标到使用Python与Scikit-learn进行实战演练的详细指南
【10月更文挑战第10天】评估机器学习模型性能是开发流程的关键,涉及准确性、可解释性、运行速度等多方面考量。不同任务(如分类、回归)采用不同评价指标,如准确率、F1分数、MSE等。示例代码展示了使用Scikit-learn库评估逻辑回归模型的过程,包括数据准备、模型训练、性能评估及交叉验证。
土木林森
8 1
子午s
|
2天前
|
机器学习/深度学习 人工智能 算法
【玉米病害识别】Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练
玉米病害识别系统,本系统使用Python作为主要开发语言,通过收集了8种常见的玉米叶部病害图片数据集('矮花叶病', '健康', '灰斑病一般', '灰斑病严重', '锈病一般', '锈病严重', '叶斑病一般', '叶斑病严重'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。再使用Django搭建Web网页操作平台,实现用户上传一张玉米病害图片识别其名称。
子午s
11 0
【玉米病害识别】Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练
zzy的aly
|
3天前
|
JSON 算法 数据可视化
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
这篇文章是关于如何通过算法接口返回的目标检测结果来计算性能指标的笔记。它涵盖了任务描述、指标分析(包括TP、FP、FN、TN、精准率和召回率),接口处理,数据集处理,以及如何使用实用工具进行文件操作和数据可视化。文章还提供了一些Python代码示例,用于处理图像文件、转换数据格式以及计算目标检测的性能指标。
zzy的aly
9 0
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)

热门文章

最新文章

  • 1
    Python开发工具PyCharm个性化设置(图解)
  • 2
    python网络编程学习笔记(1)
  • 3
    Python 中 \x00 和空字符串的区别,以及在 Django 中的坑
  • 4
    python模拟sed在每行添加##
  • 5
    python3 三级菜单-基础版
  • 6
    python 之多线程加锁
  • 7
    学python 对以后运维的工作很重要吗
  • 8
    Python使用二分插入排序竟然比直接插入排序快99倍!
  • 9
    【Python之旅】第二篇(四):字典
  • 10
    Python模块filecmp 文件比较
  • 1
    Ribbon自定义负载均衡算法
    48
  • 2
    Python遗传算法GA对长短期记忆LSTM深度学习模型超参数调优分析司机数据|附数据代码
    224
  • 3
    Python实现教程:平面最短路径算法
    85
  • 4
    R语言混合SVD模型IBCF协同过滤推荐算法研究——以母婴购物平台为例
    64
  • 5
    三个js算法
    29
  • 6
    js的两个常用算法
    27
  • 7
    前端算法之基数排序
    38
  • 8
    前端算法之桶排序
    25
  • 9
    前端算法之计数排序
    32
  • 10
    前端算法之堆排序
    37
  • 相关课程

    更多
  • Python Web开发基础
  • Python爬虫实战
  • Python常用数据科学库
  • Python网络爬虫实战
  • Python完全自学手册图文教程
  • Python基础快速入门实战教程
  • 相关电子书

    更多
  • From Python Scikit-Learn to Sc
  • Data Pre-Processing in Python:
  • 双剑合璧-Python和大数据计算平台的结合
  • 相关实验场景

    更多
  • 推荐系统入门之使用ALS算法实现打分预测
  • Python新手入门
  • Python入门
  • 零基础入门Serverless:基于函数计算快速搭建基于人工智能的目标检测系统
  • 欧拉图的构造性证明与算法实现
  • Python选择及循环结构
  • 推荐镜像

    更多
  • python-release
  • nodejs-release
  • golang
  • 下一篇
    阿里云无影云电脑免费试用,最长可试用3个月

    玻璃钢生产厂家莆田玻璃钢雕塑制作厂家六安主题商场美陈溧阳玻璃钢花盆花器上海节庆商场美陈费用广东玻璃钢雕塑摆件供货商商场春天的美陈西安欧式玻璃钢雕塑定做价格泉州玻璃钢果蔬雕塑甘肃酒店玻璃钢雕塑艺术摆件西安精巧玻璃钢座椅雕塑湖北步行街玻璃钢雕塑订做价格水果玻璃钢雕塑定做价格清远户外玻璃钢卡通雕塑河南节庆商场美陈供货商荆门人物玻璃钢雕塑定制浙江玻璃钢花盆造型包头玻璃钢雕塑卡通雕塑山东季节性商场美陈有哪些玻璃钢雕塑用几年惠州玻璃钢卡通雕塑定制人物雕像玻璃钢雕塑报价多少海南商城艺术玻璃钢雕塑武汉玻璃钢花盆雕塑定制厂家高质量玻璃钢雕塑销售厂家江海玻璃钢雕塑厂家铜川小品系列玻璃钢雕塑公司台州玻璃钢仿铜雕塑批发壁挂式玻璃钢花盆四川室内商场美陈厂家供应焦作玻璃钢雕塑制作香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

    玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化