亦菲喊你来学机器学习(7) --逻辑回归内下采样

下采样

在逻辑回归中,下采样是一种处理数据不平衡问题的方法,特别是在处理二分类问题时,如果某一类的样本数量远多于另一类,就可能导致模型偏向于多数类,从而忽略了少数类的特征。下采样通过减少多数类样本的数量,使得两类样本的数量接近,从而改善模型的性能。

优缺点

  • 优点:
  1. 可以有效减少多数类样本的数量,使数据更加平衡。
  2. 有助于提高模型对少数类的识别能力。
  • 缺点:
  1. 可能会导致信息损失,因为删除了部分多数类样本。
  2. 如果删除的样本中包含重要信息或特征,可能会影响模型的泛化能力。

那么我们如何知道,什么时候使用下采样方法呐?

下采样步骤

实验数据:

链接:训练数据
提取码:0qw2

  1. 数据观察:首先,需要观察数据集的分布情况,特别是目标变量的分布,以确定是否存在数据不平衡问题。
#一、数据预处理
data = pd.read_csv('creditcard.csv')
data = data.drop('Time',axis=1)
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
data['Amount'] = scaler.fit_transform(data[['Amount']])

#二、绘制图像,查看正负样本个数
mpl.rcParams['font.sans-serif'] = ['Microsoft YaHei']
mpl.rcParams['axes.unicode_minus'] = False

lei_count = pd.value_counts(data['Class'])
plt.title('样本数')
plt.xlabel('类别')
plt.ylabel('数量')

lei_count.plot(kind = 'bar')
plt.show()   #通过可视化查看样本数量差异

#(此处发现,样本数相差数量过大,进行下取样操作)

在这里插入图片描述

可以发现,类别为1的样本数量几乎不可见,样本极度不均衡。

  1. 选择样本:采用下采样,从多数类样本中随机选择一部分样本,选择的样本数量通常与少数类的样本数量相等或接近,以达到数据平衡的目的。
#进行下采样
#分别取出类别为0和1的数据
category_0 = data[data['Class'] == 0]
category_1 = data[data['Class'] == 1]

#将需要进行下采样的数据使用sample方法下采样
np.random.seed(seed=4)
choose_0 = category_0.sample(len(category_1)) #随机取出和类别1长度相等的数据
new_data = pd.concat([choose_0,category_1]) #将随机取出的0类数据与1类数据上下合并

#这样我们就得到了此刻的训练数据new_data:是由抽取的部分类别为0的数据以及类别为一的数据组成
#此处我们还可以再看看视图,查看样本数
  1. 构建模型:使用下采样后的数据集来训练逻辑回归模型。由于数据已经平衡,模型在训练过程中会更加关注少数类的特征,从而提高对少数类的识别能力。
from sklearn.linear_model import LogisticRegression
x = new_data.drop('Class',axis=1)
y = new_data.Class
#分割训练集和测试集
train_x,test_x,train_y,test_y = \
    train_test_split(x,y,test_size=0.3,random_state=0)

lr = LogisticRegression(max_iter=1000)
lr.fit(train_x,train_y)
  1. 模型评估:使用测试集对模型进行评估,观察模型在少数类和多数类上的表现。需要注意的是,由于下采样过程中删除了部分多数类样本,因此评估结果可能受到一定影响。
from sklearn import metrics
test_x_predict = lr.predict(test_x)
print(metrics.classification_report(test_y,test_x_predict))
-------------------------
              precision    recall  f1-score   support

           0       0.91      0.97      0.94       147
           1       0.97      0.90      0.93       149

    accuracy                           0.94       296
   macro avg       0.94      0.94      0.94       296
weighted avg       0.94      0.94      0.94       296

总结

本篇介绍了:

  1. 什么是下采样:一种处理数据不平衡问题的方法。
  2. 下采样的过程:从多数类样本中随机选择一部分样本,选择的样本数量通常与少数类的样本数量相等或接近。
  3. 如何进行下采样:使用sample方法取出和少数类数量相等的数据,再将新得到的样本同原本少数类的样本合并,作为新的训练集。
  • 14
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值