Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python SMOTE过采样创建新的数据点_Python_Oversampling_Smote - Fatal编程技术网

Python SMOTE过采样创建新的数据点

Python SMOTE过采样创建新的数据点,python,oversampling,smote,Python,Oversampling,Smote,我试图解决一个不平衡的分类问题,所有的输入特征都是分类的。 以下是每个功能的值计数: for i in X_train.columns: print(i+':',X_train[i].value_counts().shape[0]) Pclass: 3 Sex: 2 IsAlone: 2 Title: 5 IsCabin: 2 AgeBin: 4 FareBin: 4 在训练测试分割后,对训练数据应用SMOT。创建的新值不存在于X_train数据集中 from im

我试图解决一个不平衡的分类问题,所有的输入特征都是分类的。 以下是每个功能的值计数:

 for i in X_train.columns:
    print(i+':',X_train[i].value_counts().shape[0])

 Pclass: 3
 Sex: 2
 IsAlone: 2
 Title: 5
 IsCabin: 2
 AgeBin: 4
 FareBin: 4
在训练测试分割后,对训练数据应用SMOT。创建的新值不存在于X_train数据集中

 from imblearn.over_sampling import SMOTE
 from collections import Counter
 #removing the random_state dosent help
 sm = SMOTE(random_state=0)
 X_res, y_res = sm.fit_resample(X_train, y_train)
 print('Resampled dataset shape %s' % Counter(y_res))

 Resampled dataset shape Counter({1: 381, 0: 381})
重采样数据集的值计数:

 Pclass: 16
 Sex: 7
 IsAlone: 2
 Title: 12
 IsCabin: 2
 AgeBin: 4
 FareBin: 4
通过使用SMOTE创建了新值,这也是欠采样创建新值的情况。测试数据集中不存在这些新值

例如:

X_train-Pclass 1-20,2-15,3-40
X_res-Pclass 1-20,0.999999-3,2-11,1.9999999-4,3-34,2.9999999-6
我的问题:

  • 为什么要创造这些价值观?它们是否具有某些重要性

  • 如何应对?我应该把它们整圆还是去掉

  • 是否有一种方法可以在不创建这些新值的情况下执行过采样和欠采样


  • 如果数据集的类分布不均匀,这可能会在以后的训练和分类阶段造成麻烦,因为分类器将拥有非常少的数据来学习特定类的特征

    与正常的上采样不同,SMOTE利用最近邻算法生成新的合成数据,用于训练模型

    如中所述,“少数群体通过抽取每个少数群体样本,并沿连接任意/所有k个少数群体最近邻的线段引入合成示例,对少数群体进行过采样。”

    因此,是的,这些新生成的合成数据点很重要,您不必太担心它们。SMOTE是执行此任务的最佳技术之一,因此我建议使用此技术

    以下图为例: 图a有更多的类0数据点,而类1数据点很少

    如您所见,在应用SMOTE(图b)之后,它将为少数类生成新的数据点(在本例中,为类1),以平衡数据集


    尝试阅读: