【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.pswp.cn/web/14269.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/14269.shtml
英文地址,請注明出處:http://en.pswp.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;用于描述進程的狀態和…