大佬教程收集整理的这篇文章主要介绍了复制训练示例以处理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,请注明来意。