程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了复制训练示例以处理pandas数据框中的类不平衡大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决复制训练示例以处理pandas数据框中的类不平衡?

开发过程中遇到复制训练示例以处理pandas数据框中的类不平衡的问题如何解决?下面主要结合日常开发的经验,给出你关于复制训练示例以处理pandas数据框中的类不平衡的解决方法建议,希望对你解决复制训练示例以处理pandas数据框中的类不平衡有所启发或帮助;

您可以找到一个小组的最大人数

@H_126_5@max_size = frame['class'].value_counts().max()

在您的示例中,该值等于8。对于每个组,您都可以使用替换@H_126_5@max_size - len(group_sizE)元素进行采样。这样,如果将它们连接到原始DataFrame,它们的大小将相同,并且将保留原始行。

lst = [frame]
for class_index, group in frame.groupby('class'):
    lst.append(group.sample(max_size-len(group), replace=TruE))
frame_new = pd.concat(lst)

您可以使用它@H_126_5@max_size-len(group),也可以添加一些噪音,因为这会使所有组的大小相等。

解决方法

我在熊猫中有一个DataFrame,其中包含训练示例,例如:

   feature1  feature2  class
0  0.548814  0.791725      1
1  0.715189  0.528895      0
2  0.602763  0.568045      0
3  0.544883  0.925597      0
4  0.423655  0.071036      0
5  0.645894  0.087129      0
6  0.437587  0.020218      0
7  0.891773  0.832620      1
8  0.963663  0.778157      0
9  0.383442  0.870012      0

我生成的使用:

import pandas as pd
import numpy as np

np.random.seed(0)
number_of_samples = 10
frame = pd.DataFrame({
    'feature1': np.random.random(number_of_samples),'feature2': np.random.random(number_of_samples),'class':    np.random.binomial(2,0.1,size=number_of_samples),},columns=['feature1','feature2','class'])

print(framE)

如您所见,训练集是不平衡的(8个样本的等级为0,而只有2个样本的等级为1)。我想对训练集进行过度采样。具体来说,我想复制第1类的训练样本,以便平衡训练集(即,第0类的样本数与第1类的样本数大致相同)。我该怎么办

理想情况下,我想要一个可以推广到多类设置的解决方案(即,类列中的整数可能大于1)。

大佬总结

以上是大佬教程为你收集整理的复制训练示例以处理pandas数据框中的类不平衡全部内容,希望文章能够帮你解决复制训练示例以处理pandas数据框中的类不平衡所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。