【Python】pandas连续变量分箱


路过了学校花店
荒野到海边
有一种浪漫的爱
是浪费时间
徘徊到繁华世界
才发现你背影
平凡得特别
绕过了城外边界
还是没告别
爱错过了太久
反而错得完美无缺
幸福兜了一个圈

                     🎵 林宥嘉《兜圈》


import pandas as pd
import numpy as np
from sklearn.model_selection import cross_val_score
from sklearn.linear_model import LogisticRegression# 示例数据
data = {'feature1': np.random.rand(1000),'feature2': np.random.rand(1000),'feature3': np.random.rand(1000),'target': np.random.randint(0, 2, 1000)
}
df = pd.DataFrame(data)# 自动选择最佳分箱数量的函数
def find_best_bins(df, feature, target, max_bins=10):best_bins = 2best_score = -np.inffor bins in range(2, max_bins + 1):df['bin'] = pd.cut(df[feature], bins=bins, labels=False)model = LogisticRegression()# 使用分箱后的特征进行交叉验证评分scores = cross_val_score(model, df[['bin']], df[target], scoring='roc_auc', cv=5)mean_score = scores.mean()if mean_score > best_score:best_score = mean_scorebest_bins = binsreturn best_bins# 计算 WoE 和 IV 的函数
def calculate_woe_iv(df, feature, target, bins):epsilon = 1e-6  # 平滑处理,避免除零df['bin'] = pd.cut(df[feature], bins=bins)# 计算每个箱的总数、正样本数和负样本数binned = df.groupby('bin')[target].agg(['count', 'sum'])binned.columns = ['total', 'positive']binned['negative'] = binned['total'] - binned['positive']# 计算每个箱或类别的正负样本比例binned['positive_ratio'] = (binned['positive'] + epsilon) / (binned['positive'].sum() + epsilon)binned['negative_ratio'] = (binned['negative'] + epsilon) / (binned['negative'].sum() + epsilon)# 计算 WoE 和 IVbinned['woe'] = np.log(binned['positive_ratio'] / binned['negative_ratio'])binned['iv'] = (binned['positive_ratio'] - binned['negative_ratio']) * binned['woe']# 计算总 IViv = binned['iv'].sum()return iv# 对 DataFrame 中每个特征列进行分箱,并选择最佳分箱数量
def binning_dataframe(df, target, max_bins=10):binned_df = df.copy()bin_info = {}iv_info = {}for feature in df.columns:if feature != target:best_bins = find_best_bins(df, feature, target, max_bins)bin_info[feature] = best_binsbinned_df[feature] = pd.cut(df[feature], bins=best_bins, labels=False)# 计算 IV 值iv = calculate_woe_iv(df, feature, target, best_bins)iv_info[feature] = ivreturn binned_df, bin_info, iv_info# 进行分箱并选择最佳分箱数量
binned_df, bin_info, iv_info = binning_dataframe(df, 'target', max_bins=10)print("分箱信息:")
print(bin_info)
print("\nIV 信息:")
print(iv_info)
print("\n分箱后的 DataFrame:")
print(binned_df.head())

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/14269.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

redis核心面试题一(架构原理+RDB+AOF)

文章目录 0. redis与mysql区别1. redis是单线程架构还是多线程架构2. redis单线程为什么这么快3. redis过期key删除策略4. redis主从复制架构原理5. redis哨兵模式架构原理6. redis高可用集群架构原理7. redis持久化之RDB8. redis持久化之AOF9. redis持久化之混合持久化 0. red…

穷人如何翻身赚钱?不妨试试这5个冷门生意,干好了,收入相当不错

根据统计数据,我国月收入超过3000元的人口已超过4亿,这意味着仍有约10亿人的月收入低于3000元。正因为如此,网络上许多人都自嘲为“穷人”。 然而,穷人真的无法改变自己的命运吗?并非如此。对于渴望赚钱的穷人来说&am…

gpt2使用ggml推理

gpt2使用ggml推理 ggml/examples/gpt-2/main-backend.cpp : #include "ggml/ggml.h" #include "ggml/ggml-alloc.h" #include "ggml/ggml-backend.h"#ifdef GGML_USE_CUDA #include "ggml-cuda.h" #endif#ifdef GGML_USE_METAL #inc…

传统蓝牙模块BR/EDR与低功耗蓝牙模块有什么区别?

传统蓝牙模块BR/EDR与低功耗蓝牙模块有什么区别?下面跟随美迅物联网MesoonRF从多个维度来了解。   概述:低功耗蓝牙采用了高斯频移键控(GFSK)。这里我们先抛开蓝牙的协议,单纯从Radio的角度看收发通信,Ra…

【Crypto】Url编码

文章目录 Url编码解题感悟 Url编码 Url编码 搞定 小小flag,拿下! 解题感悟 有点饿了…

day 1: 738. 单调递增的数字

738. 单调递增的数字 当且仅当每个相邻位数上的数字 x 和 y 满足 x < y 时&#xff0c;我们称这个整数是单调递增的。 给定一个整数 n &#xff0c;返回 小于或等于 n 的最大数字&#xff0c;且数字呈 单调递增 。 示例1&#xff1a; 输入&#xff1a;n 10 输出&#xff1a…

图数据库助力供应链柔性升级

导读 当今市场环境受短视频等流媒体影响&#xff0c;任何风险事件在社交网络中传播速度极其迅速&#xff0c;留给企业的反应时间按分秒计&#xff0c;传统供应链的年度计划面对剧烈变化的市场环境已失去意义。此外&#xff0c;受近年局势动荡的影响&#xff0c;市场需求和供应…

APISIX-简单使用

APISIX-简单使用 这个工具还是很不错的&#xff0c;可视化的配置很清晰 &#xff0c; 想用NGINX的配置模式也是可以的&#xff0c;就是要去修改配置文件了。 APISIX&#xff0c;一个很不错的可视化工具&#xff0c;用来代替Nginx相当不错&#xff0c;可作为Nginx的平替方案&…

【Python进阶】主流电商平台数据分析||数据采集返回商品详情主题链接主图SKU数据

Python是一种高级编程语言&#xff0c;广泛应用于软件开发、数据分析、人工智能、科学计算等领域。在软件开发方面&#xff0c;Python在网站开发、网络编程、桌面软件开发等方面有着广泛的应用。在数据分析和人工智能领域&#xff0c;Python的各种库如NumPy、Pandas、Matplotli…

守护者:ThingsBoard物联网网关在温室环境监测中的应用

系统设计 智慧农业温室大棚系统由传感器及执行设备、数据传输网关、智慧农业温室大棚管理平台组成。 系统支持实时采集温室大棚内的空气温湿度、土壤温湿度、光照和二氧化碳等环境参数&#xff0c;根据农作物的生长需求自动控制温室中电器设备的启停&#xff0c;从而达到植物生…

中移物联OneMO Cat.1模组推动联网POS规模应用

在第三方支付蓬勃发展和消费模式不断革新的时代背景下&#xff0c;新型联网POS终端以其智能化、便捷化的特点丰富人们生活便利度。在这一变革浪潮中&#xff0c;中移物联OneMO Cat.1模组ML307R凭借其卓越的性能和成本效益&#xff0c;成为推动联网POS规模应用的重要力量。 性能…

DHCP 动态分配概述

DHCP 动态分配概述 DHCP&#xff08;Dynamic Host Configuration Protocol&#xff0c;动态主机配置协议&#xff09;是一种网络协议&#xff0c;用于自动分配IP地址和其他网络配置参数&#xff08;如子网掩码、默认网关、DNS服务器&#xff09;给网络中的设备。这简化了网络管…

【Linux】信号集及信号集操作函数

文章目录 一、信号集是什么&#xff1f;二、信号集操作函数1. sigemptyset2. sigfillset3. sigaddset4. sigdelset5. sigismember6. sigprocmask (仅用于读取或更改block表)7. sigpending (仅用于读取pending表) 一、信号集是什么&#xff1f; 对于每个进程, 都有三个信号集, …

k8s集群部署成功后某个节点突然出现notready状态解决办法

通过&#xff1a; kubectl get nodes 查看master1节点为not ready 通过查看日志&#xff1a; journalctl -f -u kubelet.service 看到这里 查看状态&#xff1a; systemctl status kubelet.service 重启一样会报错 执行&#xff1a; swapoff -a 执行后&#xff0c;重启…

pytorch深度学习-环境搭建

1.Anaconda下载&#xff08;首先安装Anaconda不需要先安装Python了&#xff01;&#xff09; 版本 3.11. Download Anaconda Distribution | Anaconda 1.2 跳过注册直接下载 2.安装 直接next, (Install for 可以选择All Users&#xff0c;我选择的是All Users) 点击默认选项…

Qt Designer 使用笔记

目录 qt designer安装 预览 Ctrl R 使用 Qt Designer 设计的ui文件可以通过以下命令转为.py文件 命令行脚本&#xff1a; pycharm工具栏配置&#xff1b; pyqt5也是可以的&#xff1a; 2.2 测试是否配置成功 设置背景颜色&#xff1a; ui收集 qt designer安装 pip ins…

高耗能工厂实现ESG能源管控的策略与实践探讨-天拓四方

随着全球气候变化的加剧和ESG&#xff08;环境、社会和治理&#xff09;理念的普及&#xff0c;高耗能工厂面临着巨大的挑战和机遇。如何有效地实现ESG能源管控&#xff0c;不仅关乎企业的可持续发展&#xff0c;也是应对全球环境问题的关键一环。本文将探讨高耗能工厂实现ESG能…

JavaEE-网络初识

文章目录 一、网络背景1.1 起源1.2 国内网络的发展 二、关键概念2.1 网络2.2 设备2.3 ip地址与端口号 三、协议3.1 协议分层3.2 OSI七层模型3.3 TCP/IP五层模型3.4 数据传输过程的简单叙述 一、网络背景 1.1 起源 在国外大概时上世纪70年代左右&#xff0c;网络就出现了&…

U-Mail邮件系统取得多项适配认证,全面支持国产化信创环境

随着信息技术的发展&#xff0c;信息化建设越来越深入到社会各个领域&#xff0c;成为驱动经济社会发展的重要力量。在此背景下&#xff0c;我国正加快构建国家信息安全保障体系&#xff0c;实现自主可控&#xff0c;形成安全可靠的信息技术体系。这正是我们所说的“信创”&…

Linux中经典的并发编程问题生产者和消费者

一&#xff0c;进程和线程区别 1&#xff0c;进程是程序的一次执行实例&#xff0c;是系统进行资源分配和调度的独立单位。进程具有独立的内存空间、系统资源以及独立的执行序列。每个进程都有其独立的进程控制块&#xff08;PCB&#xff09;&#xff0c;用于描述进程的状态和…