调权重的结果和人工合成数据的结果

非平衡数据可能导致模型过拟合,文章探讨了欠采样、过采样和人工合成数据以及调权重等方法处理非平衡数据,以提升模型的准确性和公平性。实验结果显示,人工合成数据和调权重方法表现最佳,而欠采样效果相对较差。
摘要由CSDN通过智能技术生成

非平衡数据会影响最后的评判效果,严重的会带来过拟合的效果,即模型总是把样本划分到样本量较多的那一种。为了让模型的评判更准确,我们需要对非平衡数据进行一定的处理,主要有以下几种方式:

 

  • 欠采样
  • 过采样
  • 人工合成
  • 调权重

 

在开始介绍不同的处理方式之前,我们先引入一组非平衡数据。

 
  1. #导入一些相关库

  2. from sklearn.model_selection import train_test_split

  3. from sklearn.linear_model import LogisticRegression

  4. from sklearn.metrics import classification_report

  5. from sklearn.metrics import roc_curve, auc

  6. from sklearn.preprocessing import scale

  7. #导入数据

  8. df=pd.read_excel(r"C:\Users\zhangjunhong\Desktop\Unbanlanced-data.xlsx").fillna(0)

  • 1

看一下正负样本的具体数据量情况。

 
  1. x=df.iloc[:,1:-1]

  2. y=df["label"]

  3. print(y.value_counts())

  4. print("-------------------------")

  5. print(y.value_counts(normalize=True))

  • 1

该数据量的正负样本比例接近7:3,我们看一下不做任何处理的情况下,模型的预测效果如何。

 
  1. #将模型进行封装,方便调用

  2. def get_result_data(x,y):

  3. x_=scale(x,with_mean=True,with_std=True)

  4. x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.4,random_state=0)

  5. model=LogisticRegression()

  6. clf=model.fit(x_train,y_train)

  7. print("LR模型测试成绩:{:.2f}".format(clf.score(x_test,y_test)))

  8. y_pred

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值