问题描述
假设我有一个具有2个独立要素和6个从属要素的数据集,其中AA and BB
是独立的,而A,B,C,D,E,F
是因变量的。
AA BB A B C D E F
teacher No 1 0 0 1 0 0
student Yes 1 1 0 1 0 0
officer Yes 0 0 1 0 0 0
engineer Maybe 1 1 1 0 0 0
student Sure 0 1 1 0 0 1
lawyer Maybe 1 1 0 0 1 0
student Yes 1 0 0 1 1 0
teacher No 1 1 1 0 0 0
doctor No 0 1 1 0 0 0
engineer Maybe 1 0 0 1 1 0
如果假设我想通过上采样或下采样或过采样来平衡我的数据,该怎么办?普通的SMOTE和sklearn技术不会采用多个目标,并且会引发很多错误。有人可以帮我吗?
解决方法
免责声明:重采样类/加权损失函数只有在使训练集更接近测试集中的类的分布的情况下,才能改善您的结果。在这种情况下,最好使用加权损失函数。
如何对数据集重新采样:
class_counts = df['AA'].value_counts()
class_weights = len(class_counts)/class_counts
resampled_df = df.sample(
n=class_counts.max()*len(class_counts),weights=df['AA'].map(class_weights),replace=True)