问题标签 [oversampling]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
9576 浏览

python - 复制训练示例以处理 pandas 数据框中的类不平衡

我在 pandas 中有一个包含训练示例的 DataFrame,例如:

我使用以下方法生成:

如您所见,训练集是不平衡的(8 个样本属于 0 类,而只有 2 个样本属于 1 类)。我想对训练集进行过采样。具体来说,我想复制第 1 类的训练样本,以使训练集保持平衡(即,第 0 类的样本数量与第 1 类的样本数量大致相同)。我该怎么做?

理想情况下,我想要一个可以推广到多类设置的解决方案(即,类列中的整数可能大于 1)。

0 投票
2 回答
1003 浏览

python - python scikit learn中的Stratify和StratifiedKFold有什么区别?

我的数据由 99% 的目标变量 = 1 和 1% 的目标变量 = '0' 组成。分层是否保证训练测试和测试集在目标变量方面具有相等的数据比率。就像在容器中一样,“1”和“0”的数量相等?

请参阅下面的代码以进行说明

0 投票
0 回答
791 浏览

python-2.7 - 过采样不会产生新样本

我的数据集具有以下分布:

python-imblearn用来对少数类进行过采样。使用regularsmote 我可以生成 200 个第 6 类的样本,但是使用l1borderline或者l2borderline我不能这样做。

有什么数学问题还是我错过了什么?

0 投票
2 回答
1068 浏览

python - 用于 RandomOversampler、RandomForestClassifier 和 GridSearchCV 的管道

我正在研究文本二进制分类问题。由于这些类高度不平衡,我必须采用 RandomOversampler() 之类的采样技术。然后对于分类,我将使用 RandomForestClassifier (),其参数需要使用 GridSearchCV() 进行调整。我正在尝试创建一个管道来按顺序执行这些操作,但到目前为止失败了。它抛出“无效参数”。

0 投票
0 回答
770 浏览

machine-learning - 有什么理由不一起使用过采样和欠采样?

这一直困扰着我一段时间。

如果过采样和欠采样都有其优点和缺点,为什么不将它们一起使用以尽量减少它们的缺点呢?

我只是找不到一篇论文或文章说他们已经使用了这两种方法,或者我们不应该同时使用这两种方法。

联合使用可以减少对少数的过采样和对大多数的欠采样,不是吗?

0 投票
2 回答
323 浏览

arrays - 如何将 n 个字符串元素的数组过采样到 m 个字符串元素的数组中

l 想将一个元素数组过采样n到一个由 m 个元素组成的数组中,这样m > n.

例如让我们取 n=3

设置 m =7

我在找什么?

0 投票
1 回答
3586 浏览

pyspark - 如何在 Pyspark 中对数据框进行过采样?

如何在pyspark中对数据框进行过采样?

仅对 df 的一小部分进行采样,不能过采样。

0 投票
5 回答
27153 浏览

scikit-learn - SMOTE 初始化需要 n_neighbors <= n_samples,但 n_samples < n_neighbors

我已经预先清理了数据,下面显示了前 4 行的格式:

我调用了 train_test_split() 如下:

然后,我使用以下 TfidfVectorizer 和拟合/转换过程对 X 训练和测试数据进行了矢量化处理:

我现在处于通常应用分类器等的阶段(如果这是一组平衡的数据)。但是,我初始化了 imblearn 的 SMOTE ()类(以执行过采样)...

...但这会导致:

我试图减少 n_neighbors 的数量,但无济于事,任何提示或建议将不胜感激。谢谢阅读。

-------------------------------------------------- -------------------------------------------------- --------------------------------

编辑:

完整回溯

数据集/数据框 ( df) 包含两列 2380 行,如上所示df.head()X_train包含 1785 行格式为字符串 ( df['cleaned']) 的行,y_train还包含 1785 行格式为字符串 ( df['Year'])。

TfidfVectorizer()使用:X_train和的后矢量化X_test分别从pandas.core.series.Series形状 '(1785,)' 和 '(595,)' 转换scipy.sparse.csr.csr_matrix为形状 '(1785, 126459)' 和 '(595, 126459)'。

至于类的数量:使用Counter(),我计算出有 199 个类(年),类的每个实例都附加到上述df['cleaned']数据的一个元素,其中包含从文本语料库中提取的字符串列表。

此过程的目标是根据词汇表自动确定/猜测输入文本数据的年份、十年或世纪(任何程度的分类都可以!)。

0 投票
2 回答
1294 浏览

machine-learning - 如何在交叉验证中使用过采样数据?

我有一个不平衡的数据集。我正在使用 SMOTE(合成少数过采样技术)来执行过采样。在执行二元分类时,我在这个过采样数据集上使用了 10 倍交叉验证。

但是,我最近看到了这篇论文;联合使用过采样和欠采样技术以及交叉验证来开发和评估预测模型,其中提到在交叉验证期间使用过采样数据集是不正确的,因为它会导致过度乐观的性能估计。

我想验证在交叉验证中使用过采样数据的正确方法/程序

0 投票
1 回答
16474 浏览

python - 在 Scikit-learn 中使用 Smote 和 Gridsearchcv

我正在处理一个不平衡的数据集,并希望使用 scikit 的 gridsearchcv 进行网格搜索以调整模型的参数。为了对数据进行过采样,我想使用 SMOTE,我知道我可以将其作为管道的一个阶段并将其传递给 gridsearchcv。我担心的是,我认为 smote 将同时应用于训练和验证折叠,这不是你应该做的。验证集不应过采样。整个管道将应用于两个数据集拆分,我对吗?如果是的话,我该如何扭转这个局面?非常感谢提前