问题标签 [imblearn]

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 投票
0 回答
110 浏览

python - sklearn:随机删除多数类而不改组数据集

我有一个 48000 的图像数据集,其中 40k 正常类和 8k 异常实例。为了使数据集平衡,我需要对多数类进行欠采样。虽然我使用了 sklearn imblearn 随机欠采样方法,效果很好,但我需要在删除大多数实例的同时保留行的顺序(图像序列)。

0 投票
1 回答
53 浏览

python-3.x - 为什么 imblearn 可以使用 jupyter notebook python 2 而不是 3?

我正在尝试运行代码,但出现错误。如果我在 python 2 上有内核,那么 imblearn 工作顺利,但 pipe_grid 不起作用。当我切换到 python 3 时,pipe_grid 工作但 imblearn 停止工作。我没有分享代码,因为它很长,而且这两个位于代码的不同部分。

0 投票
1 回答
704 浏览

python - 随机森林:平衡测试集?

我正在尝试在不平衡的数据集(〜1:4)上运行随机森林分类器。

我正在使用 imblearn 的方法如下:

RepeatedStratifiedKFold训练集和测试集的分割是在使用from scikit learn的交叉验证方法中执行的。

但是,我想知道测试集是否也需要平衡以获得合理的准确度分数(敏感性、特异性等)。我希望你能帮我解决这个问题。

非常感谢!

0 投票
1 回答
938 浏览

python - 如何在不降低不平衡数据集中的召回率的情况下提高精度?

我必须使用决策树对不平衡数据集(50000:0、1000:1)进行二元分类。为了获得良好的召回率(0.92),我使用了模块 Imblearn 中的 RandomOversampling 函数,并使用 max_depth 参数进行了修剪。问题是精度非常低(0.44),我有太多误报。

我试图训练一个特定的分类器来处理产生误报的边界实例。首先,我将数据集拆分为训练集和测试集(80%-20%)。然后我将 train2 和 test2 集(66%,33%)分开训练。我使用 dtc(#1) 来预测 test2,并且我只将预测为真的实例。然后我在所有这些数据上训练了一个 dtc(#2),目的是建立一个能够区分边缘情况的分类器。我使用在第一个过采样训练集上训练的 dtc(#3) 来预测官方测试集,并得到 Recall=0.92 和 Precision=0.44。最后,我只在 dtc(#3) 预测为真的数据上使用了 dtc(#2),希望能区分 TP 和 FP,但效果不太好。我得到 Rec=0.79 和 Prec=0.69。

我必须在 dtc3 (Recall=0.92, Prec=0.44) 或整个颈椎过程 (Recall=0.79, Prec=0.69) 之间进行选择。您对改进这些指标有什么想法吗?我的目标大约是(0.8/0.9)。

0 投票
1 回答
1854 浏览

python - imblearn smote+enn 对多数类的采样不足

我有一个不平衡的数据集,当我尝试使用 SMOTEENN 平衡他时,多数类的数量减少了一半

我尝试使用所有提供的选项更改“sampling_strategy”参数,但无济于事

0 投票
2 回答
2570 浏览

python - 如何在使用 SMOTE 进行过采样时修复样本 < K-neighbours 错误?

我正在为 11 个标签设计一个多类分类器。我SMOTE用来解决抽样问题。但是我面临以下错误:-

SMOTE 错误

错误

为什么它说我只有 1 个 n_samples?

当我为 100k 行(并且只有 4 个标签)的更小的数据集尝试相同的代码时,它运行得很好。

有关输入的详细信息

输入参数

X_f

Y_f

输入参数的维度

我尝试使用其他imblearn包装技术

调试 SMOTE fit_resample() 方法我知道 SMOTE 通过使用少数数据点的最近邻居之间的欧几里德距离来合成少数样本来工作。所以我打印出 ../python3.6/site-packages/sklearn/neighbors/base.py 文件中的 n_samples 变量。它显示样本从 5236 -> 103 -> 3 稳步减少,然后我得到了错误。我不明白发生了什么事。

  1. 使用SVMSMOTE:- 计算时间太长(超过 2 天),并且 PC 崩溃。
  2. 使用RandomOverSampler:- 模型的准确率很差,为 45%
  3. 使用不同的sampling_strategy:-minority仅适用于。
  4. 此处此处提供的建议也未成功。老实说,我无法理解他们。
  5. 当我将数据集减少到 100k、1k 和 5k 行时,收到了同样的错误。

尽管尝试了,但我对它的了解并不多。我是采样的新手。你能帮我解决这个问题吗?

0 投票
1 回答
3079 浏览

python - 类权重与欠采样/过采样

例如,在不平衡分类(使用 scikit-learn)中,平衡类(即将 class_weight 设置为平衡)与使用 SMOTE 进行过采样有什么区别?一个与另一个的预期效果是什么?

0 投票
0 回答
1211 浏览

python - 如何使用(imblearn.keras import BalancedBatchGenerator)与两个以上的dem数组X_train?

我正在构建一个使用 Keras 在不平衡数据集上训练的 CNN 模型。我正在使用 imblearn 提供的 imblearn.keras.balanced_batch_generator 进行数据重新采样。

我的 x_train 数组的形状为 (n_samples, 32, 32, 1),而 balance_batch_generator 的 fit_generator 采用形状为 (n_samples, n_features) 的 x_train 的输入。

如何将图像(32、32、1)的尺寸合并为一个 dem n_features?

输出:

为 CNN 上传数据:

错误按摩:

0 投票
1 回答
1155 浏览

python-3.x - 过采样是在使用 imblearn 管道进行交叉验证之前还是之后发生的?

在对训练数据进行交叉验证以验证我的超参数之前,我已将数据拆分为训练/测试。我有一个不平衡的数据集,想在每次迭代中执行 SMOTE 过采样,所以我建立了一个使用imblearn.

我的理解是,应该在将数据分成k-folds之后进行过采样,以防止信息泄露。在下面的设置中使用时,是否保留了这种操作顺序(数据拆分为 k 折叠、k-1 折叠过采样、预测剩余折叠)Pipeline

0 投票
1 回答
1404 浏览

python - Python 过采样在管道中组合了多个采样器

我的问题涉及 SMOTE 类引发的值错误。

预期 n_neighbors <= n_samples,但 n_samples = 1,n_neighbors = 6

经过一番调查,我发现我的一些班级(总共 158 个班级)的样本极少。

根据这篇文章中提出的解决方案

创建一个使用 SMOTE 和 RandomOversampler 的管道,以满足 smoted 类的条件 n_neighbors <= n_samples 并在不满足条件时使用随机过采样。

但是,我仍在努力设置和运行我的实验。

当我运行它时,我仍然有同样的错误。我的猜测是,生成的管道应用了两个采样器,而我只需要一次应用其中一个,基于预定义的条件(如果项目数小于 X,则为 RandomSampler,否则为 SMOTE)。有没有办法在项目数量极少的情况下设置调用 RandomSampler 的条件?

先感谢您。