问题标签 [imbalanced-data]

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 投票
2 回答
58 浏览

python - 如何使用 SVM 对不平衡数据集进行分类

我正在使用 SVM,我的数据集不平衡。我得到的结果是将 0 级分类为 99%,将 1 级分类为 1%。有什么方法可以使用 SVM 正确分类不平衡数据集。

0 投票
1 回答
82 浏览

scikit-learn - scikit中加权指标的含义:更大的类更权重还是更小的类更权重?

我正在处理一个不平衡的数据集,并尝试使用验证指标来处理它。在 scikit 文档中,我发现以下内容weighted

计算每个标签的指标,并通过支持度(每个标签的真实实例数)找到它们的平均加权值。这会改变“宏观”以解决标签不平衡问题;它可能导致 F 分数不在精确率和召回率之间。

计算按支持度加权的平均值是否意味着具有更多样本的类的权重高于具有较少样本的类,或者看起来更合乎逻辑的是,较小的类的权重高于较大的类。

我在文档中找不到任何内容,并想确保我选择了正确的指标。

谢谢!

0 投票
1 回答
1011 浏览

machine-learning - 在数据不平衡的管道中进行交叉验证的正确方法

对于给定的不平衡数据,我创建了一个不同的标准化管道和一个热编码

之后,一个柱式变压器将上述管道保持在一个

最终管道如下

我正在对不平衡数据进行管道拟合,因此我将 SMOTE 技术与预处理和分类器一起包括在内。由于不平衡,我想检查召回分数。

正确的方法如下面的代码所示吗?我正在召回 0.98 左右,这可能会导致模型过度拟合。如果我犯了任何错误,有什么建议吗?

0 投票
0 回答
450 浏览

machine-learning - 由于类不平衡,在对训练数据进行下采样后评估测试集上的模型结果

我正在处理一个类极度不平衡的数据集(正类的百分比约为 0.1%),并探索了许多不同的采样技术来帮助提高模型性能(由 AUPRC 测量)。由于我只有几千个正类示例和几百万个负类示例,因此我主要探索下采样。总的来说,我发现当在反映类真实分布的不平衡测试集上进行评估时,这种方法几乎没有导致模型改进。

然而,作为一项实验,我尝试对训练集和测试集进行下采样,并发现性能提高了一个数量级(10 倍)。这一发现对于 XGBoost 和简单的全连接 MLP 模型都成立。

这对我来说表明该模型实际上可以区分类别,但我不知道如何在更平衡的训练集上训练时调整模型以在不平衡的训练集上评估时获得类似的性能增益。有什么建议么?

0 投票
1 回答
1935 浏览

scikit-learn - 逻辑回归 - class_weight 平衡与 dict 论点

当使用 sklearn LogisticRegression 函数对不平衡的训练数据集(例如,85% pos 类与 15% neg 类)进行二元分类时,将 class_weight 参数设置为 'balanced' 与将其设置为 {0:0.15, 1 之间是否存在差异: 0.85} ? 根据文档,在我看来,使用“平衡”参数与提供字典的作用相同。

类重量

“平衡”模式使用 y 的值自动调整与输入数据中的类频率成反比的权重,如 n_samples / (n_classes * np.bincount(y))。

0 投票
1 回答
609 浏览

scikit-learn - 如何在 sklearn 中使用 GaussianNB 和 KNeighborsRegressor 的类权重?

我有一个高度不平衡的数据集,我想从中获得分类(二进制)和概率。我已经设法使用逻辑回归和随机森林来使用类权重从 cross_val_predict 获得结果。

我知道 RandomForestClassifier 和 LogisiticRegression 可以将类权重作为参数,而 KNeighborsRegressor 和 GaussianNB 则不能。但是,对于文档中的 KNN 和 NB,它说为此我可以使用包含样本权重的 fit:

所以我正在考虑通过计算类权重并根据样本的分类使用这些来创建样本权重数组来解决它。这是代码:

不确定这种解决方法是否有意义,但是我设法使用这种方法拟合了模型,而且我似乎在我的小班上得到了更好的结果。

现在的问题是我想在 sklearn 中使用这个方法

但是我无法通过交叉验证来传递样本权重。

我有两个问题:

  1. 我使用样本权重代替班级权重的解决方法是否有意义?
  2. 有没有办法通过 cross_val_predict 传递样本权重,就像在没有交叉验证的情况下使用 fit 一样?
0 投票
7 回答
20448 浏览

python - AttributeError:“SMOTE”对象没有属性“_validate_data”

我正在使用 SMOTE 重新采样我的数据(多类)。

但是,我收到此属性错误。任何人都可以帮忙吗?

0 投票
1 回答
1037 浏览

machine-learning - 处理不平衡的时间序列数据

拥有传感器的时间序列数据:

我建立了一个 LSTM 模型,该模型根据前 7 天预测第 30 天的目标值。

模型 MSE 为 0.05,但在查看数据时,我可以看到在大多数情况下,第 30 天的目标分数在特定范围之间。所以我的模型预测大部分时间都是正确的,而在出现异常时会错过(这是我想要捕捉的)。

我研究了处理带有分类问题的不平衡数据的技术,例如过采样、欠采样和 SMOTE。但是,我找不到有关时间序列回归问题的任何信息。

0 投票
0 回答
341 浏览

python - 如何将 SMOTENC 应用于包含对象和数字列的数据框?

我一直在尝试将列组合包含在 categorical_features 参数中,但它们都不起作用。我的数据名声中也没有空值。我使用 Smotenc 的原因是因为我的目标向量非常倾斜:99.7% 是,0.3% 不是。请帮忙。

0 投票
1 回答
475 浏览

machine-learning - 忽略 SMOTE 过采样中的列

我有六个特征列和一个目标列,这是不平衡的。我可以通过复制与常量完全相同的内容(月、年列)仅为 X1、X2、X3、X4 四个列创建合成记录,从而制作像 ADASYN 或 SMOTE 这样的过采样方法

当前之一:

在此处输入图像描述

预期一:它可以通过对目标类'1'进行上采样来创建合成记录,但是记录的数量可以增加,但添加的记录应该有月份和年份(不变,如下所示)

在此处输入图像描述