重新采样查询

我在使用sklearn.utils resample时有些困惑。

使用不平衡的数据集,我试图对多数类进行随机下采样。一切运行正常,但是当我刚刚意识到使用(replace = True)的模型的性能确实得到了显着改善时。

这里的性能提高背后的原因是什么?样品是否被复制的样品代替?这里有没有过度拟合的地方?

我对此有些陌生,因此,非常感谢您在此进行任何澄清。

这是代码的一部分,它对整体进行了重大更改。


from sklearn.utils import resample

Negative = sms[sms.Label == 'Neg']
Positive = sms[sms.Label == 'Pos']


# Upsample minority class
df_Negative_res = resample(Negative,replace=True,# sample with replacement
                        n_samples=243,# to match majority class
                        random_state=seed )  # reproducible results

df_Positive_res = resample(Positive,# to match majority class
                        random_state=seed)  # reproducible results

# Combine majority class with upsampled minority class
sms = pd.concat([df_Negative_res,df_Positive_res])

print(sms)

asdfg123321123321 回答:重新采样查询

通过执行过度/欠采样操作,实际上可以更改不平衡数据集的分布,并尝试提高模型的性能。因此,它实际上可以被视为一种增强方法。已经有关于使用替换重新采样的讨论,所以我建议您看一下: https://stats.stackexchange.com/questions/171440/bootstrap-methodology-why-resample-with-replacement-instead-of-random-subsamp 为了找出您的模型是否过度拟合,您需要一个大型测试集(没有任何过度采样等),并且该测试集必须与训练集不同。如果您的模型表现良好,则过拟合的机会会降低。但是,在进行过采样/欠采样时,仍会影响数据的偏差。 因此,关键是要确定您的模型是否可以很好地概括未见样本。在训练集上,它应该表现得非常好(一般情况下)。 进行交叉验证时,您还需要考虑一些非常重要的问题-您是在每个折叠中还是在整个数据集上应用采样?这是关于该主题https://www.researchgate.net/post/should_oversampling_be_done_before_or_within_cross-validation的讨论 希望我的回答对您有帮助!

,

除了上一个答案,我建议使用流水线并从不平衡学习中重新采样:https://imbalanced-learn.org/stable/auto_examples/under-sampling/plot_comparison_under_sampling.html#prototype-selection-under-sampling-by-selecting-existing-samples

通过对训练数据集而不是测试数据集进行采样,可以简化评估。

本文链接:https://www.f2er.com/2922810.html

大家都在问