先生成不平衡数据集
import pandas as pd
df = pd.DataFrame([0,0,0,0,0,0,0,0,0,1,1])
df.columns = ['label']
df.value_counts()
上采样方法,根据最多的数据集将少的数据集进行填充和打乱,数据集少的情况考虑,数据集太大会导致训练成本的提高
import warnings
warnings.filterwarnings('ignore')
# 统计每个类别的样本数量
class_counts = newtotal_df['目标值'].value_counts()
# 取出样本数量最多的类别
max_class_count = class_counts.max()
# 对每个类别进行上采样
balanced_data = pd.concat([
newtotal_df[newtotal_df['目标值'] == label].sample(max_class_count, replace=True)
for label in class_counts.index
])
# 将数据打乱
balanced_data2 = balanced_data.sample(frac=1)
结果如下
下采样
根据最少的值进行的取样办法,数据集多的情况下考虑,太少不建议使用
import warnings
warnings.filterwarnings('ignore')
# 统计每个类别的样本数量
class_counts = newtotal_df['目标值'].value_counts()
# 取出样本数量最少的类别
min_class_count = class_counts.min()
# 对每个类别进行上采样
balanced_data = pd.concat([
newtotal_df[newtotal_df['目标值'] == label].sample(min_class_count , replace=True)
for label in class_counts.index
])
# 将数据打乱
balanced_data2 = balanced_data.sample(frac=1)
结果如下