Python——机器学习:不平衡数据集常用处理方法和实例

        本文梳理了几种常用的不平衡数据集处理方法,包括过采样、欠采样,类别加权和数据加权的方法。以下通过信用卡违约实例数据进行说明。

        不平衡数据集,尤其长尾数据一直都是重点和难点。实际应用中,应根据具体的业务需求,确定应该尽量提高模型的哪个指标。如:对于信用卡违约这样一个对正类样本(违约)判定要求较高的场景,往往需要更高的召回率。我们采用AUC和F1得分评价模型结果,总体情况见下表。可见效果都一般,但处理后,F1值确实都有提升。(注:本文中除基模型外的模型均未进行调优,可能对处理后的数据未必合适。)

       

1. 导入数据集

        本文为了简单起见,直接采用预处理过的信用卡违约数据进行训练。训练集中,未违约和违约用户约比为3.5:1。

# 导入所需模块
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

import sklearn
from sklearn import metrics 
from sklearn.metrics import precision_recall_curve,classification_report
from sklearn.metrics import confusion_matrix, accuracy_score

import warnings
warnings.filterwarnings('ignore')

import lightgbm as lgb

# 预处理后的数据
df_train = pd.read_csv('./train_set_pre.csv')
df_test = pd.read_csv('./test_set_pre.csv')

X_train = df_train.drop(['default.payment.next.month'],axis=1)
y_train = df_train['default.payment.next.month']

X_test = df_test.drop(['default.payment.next.month'],axis=1)
y_test = df_test['default.payment.next.month']

# 自定义得分报告函数
def model_report(model,train_x,train_y,test_x,test_y):
    # 模型在训练集上的表现
    train_pre = model.predict(train_x)
    train_score = model.predict_
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值