问题标签 [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 投票
0 回答
426 浏览

scikit-learn - 使用带有 sklearn 投票分类器的类权重

我有一个分类问题的不平衡数据集。我的目标变量是二进制的,有两个类别。我通过将 class_weights 分配为参数来实现随机森林和逻辑回归。当我将数据分别拟合到随机森林和逻辑回归时,它工作正常。但是,当我在随机森林中使用投票分类器和来自 sklearn.ensemble 的逻辑回归来拟合数据时,它会给出错误Class label no_payment not present.,我需要采用 3 个或更多模型的集合。我已经检查过这个错误不是因为代码中实现了 naive_bayes。

我的代码:

如果我class_weight从参数列表中删除,此代码运行完美。

以下是完整的错误信息。

0 投票
0 回答
442 浏览

python - 如何告知 kNN 模型的类不平衡并为其提供类不平衡率?

在问这个问题之前,我向你保证我花了 2 天时间在互联网上研究这个话题。由于我没有找到具体的答案,所以我在这里提出这个问题。

我是数据科学的新手,我正在做我的第一类不平衡项目。我正在尝试构建能够很好地预测哪些客户可能不会出现在他们的预定约会中的模型。在我的数据集中,“1s”是没有出现的人,“0s”是出现的人。

我的 y_test 包含 1831 个“0”实例和 455 个“1”实例。我感兴趣的课程占 y_test 总数的 19.9%。

我缩放了我的数据并使用缩放的数据集来评估 KNN 的性能。我了解到 KNeighborsClassifier 有参数“权重”。它的默认值不会帮助我解决严重的班级不平衡问题。通过使用“距离”选项,它只会稍微提高混淆矩阵和 F1 分数,但会严重过度拟合。我注意到还有另一个选项称为 [callable]。我在 scikit-learn.org 上阅读了它并进行了额外的研究,但很难理解如何使用它来通知我的 KNN 类不平衡和类不平衡比率(例如,就像我能够为 Logistic 回归所做的那样)。

鉴于我初学者的 ML 知识,“权重”论点似乎是唯一让我有机会告知 KNN 我正在处理的类不平衡的论点。你知道我如何有效地使用这个论点来让 KNN 更了解类不平衡吗?文档对它的描述性不是很好,并且互联网图书馆在调整 KNN 以解决类不平衡方面并不丰富。因此,我在这里联系,看看是否有人有针对类不平衡调整 KNN 的经验,以及如何有效地做到这一点。

谢谢你帮助我学习!

0 投票
2 回答
109 浏览

machine-learning - 我可以知道处理不平衡数据集的正确方法是什么吗?

我是 DataScience 的新手,在这里澄清一些疑问。我有一个不平衡的数据集,其中包含 3 个主要称为 1、2、3 的类。“2”占多数(56.89%),“1”占 9.6%,“3”占 33.4%。请问我知道处理不平衡数据集的正确程序是什么,并希望最终有更高的预测精度。

现在我正在做的是,

1) 将数据集拆分为 70:30(训练/测试)

2)使用SMOTE使其平衡

3)尝试使用特征选择来找到最重要的特征并重新转换到新的训练集进行测试。但它面临一个错误。

我的 Jupyter 笔记本在第 3 步后遇到错误,MemoryError: could not allocate 14680064 bytes。我也可以知道为什么吗?非常感谢您,任何建议或帮助表示赞赏!

0 投票
1 回答
154 浏览

machine-learning - 平衡数据集的含义

我正在研究一些有关音频分类的信息,更具体地说:平衡与不平衡的音频数据集。所以,假设在这里我有两个数据集类的两个文件夹:汽车声音和摩托车声音,汽车类文件夹有 1000 个 .wav,摩托车文件夹也有 1000 个 .wav。这是否意味着我有一个平衡的数据集只是因为数字相等?如果 car 类中的 .wav 文件的总大小为 500 Mb 而另一个为 200 Mb,该怎么办?好吧,假设它们的文件夹大小相同,但是如果汽车录音的单个音频片段的持续时间比摩托车类中的其他音频片段长怎么办?

0 投票
1 回答
255 浏览

python - 为什么我在 McMahan 的论文中创建了一个像 FedAvg 这样的非 IID 数据集,但该数据集的测试准确度仅为 0.5?

我创建了一个非 IID 数据集,其中我将 60000 个示例(10 个类,每个类有 6000 个示例)划分为 200 个片段,每个片段有 300 个示例。有 100 个客户端,我随机分配 2 个片段给每个客户端。这是一些客户的情况。 部分客户的情况

我使用这个数据集来训练我的 TFF 模型。训练集的准确率约为 0.99,而测试集的准确率仅为 0.5 左右。我尝试了很多次,但没有改变。而且我认为该模型可能过度拟合,因此我添加了两个 dropout 进行测试,但我得到了相同的结果。然后我将 relu() 函数更改为leakyrelu(),并将优化器函数从 SGD 更改为 Adam,但准确度也在 0.5 左右。我不知道为什么。我知道非 IID 会导致准确性下降,而 FedAvg 可以缓解它。TFF 使用 FedAvg 来聚合客户端模型,这意味着我已经使用 FedAvg 作为我的底层结构,对吗?但为什么我的准确率这么低?

0 投票
0 回答
707 浏览

python - 多标签分类和分层抽样,不同准备的目标值会得到不同的结果

我有一个如下所示的数据集:

我想在这个数据集上应用多标签分类。由于我的数据集不平衡,我需要使用分层抽样。

我对准备y值并将其传递给iterative_train_test_split.

我已经通过两种方式完成了并且得到了非常不同的结果。我想知道您是否可以帮助我了解哪种方式是正确的方式。

第一个场景:

1.我将我的数据集转换成这个形状:

2.然后使用multilabel-binarizer:

3.然后调用采样:

然后使用tfidf矢量化器并传递给OneVSRest linear svc分类(如果知道该代码也可能有帮助,请告诉我我会在这里发布)

这样我的表现f1, precision, recall就在附近95 percent

第二个场景

1.我将我的数据集转换成这个形状:

2.然后使用multilabel-binarizer:

3.然后我在二值化目标上应用 LabelEncoding

4.然后:

使用相同的tfidfand OneVSRest linear svc,我绕过了68 percent性能。

我的问题是哪种方法是正确的方法,为什么会有这种差异?

我已经浏览了这个链接这个,它对我的​​问题没有帮助。

0 投票
1 回答
170 浏览

machine-learning - 针对类不平衡结合重采样和特定算法

我正在研究一个多标签文本分类问题(目标标签总数 90)。数据分布有一个长尾和大约 1900k 条记录。目前,我正在研究具有相似目标分布的大约 10 万条记录的小样本。

一些算法提供了处理类不平衡的功能,如 PAC、LinearSVC。目前,我也在做 SMOTE 来为除多数和 RandomUnderSampler 之外的所有样本生成样本,以抑制多数类的不平衡。

同时使用算法参数和 imblearn 管道来处理类不平衡是否正确?

0 投票
1 回答
35 浏览

pandas - 复杂数据集的下采样问题

我有一个不平衡的数据集,我想对其进行下采样。

这是数据集:

其中id_unique代表唯一的时间序列,t是值的顺序,value是测量值,class是时间序列所属的类。

这是一个不平衡的数据集,我想将其下采样为以下内容:

我试过了:

但显然这只是从原始数据名(属于多数类)中选择了一些行并将它们删除。结果,我从每个班级的每个时间序列中获得了一些片段,但是完整时间序列中的信息丢失了。

我正在寻找一种以某种方式对数据集进行下采样的方法,以便从多数类中删除整个时间序列(id_unique),并且我最终为每个类获得相同数量的完整时间序列。选择应该是随机的。

我尝试了一些 groupby 行,但它们都导致错误..

感谢您对此的任何提示!

0 投票
0 回答
70 浏览

nlp - 过采样的不平衡文本分类:校正类概率

我的数据集有 3 个类和 900 个用于训练的示例。类分布为 220、185 和 500。

我发现如果我对训练数据进行过采样,那么我必须纠正/校准测试数据的预测概率,因为在过采样之后,训练和测试数据分布不一样。这很好地描述了here

我有三个问题:

  1. 我是否也必须这样做来预测验证数据集(用于提前停止)?

  2. 我必须更正损失计算的概率吗?

  3. 这是强制性步骤吗?我问这个是因为这可能会损害整体准确性。因为这将惩罚具有较少示例的类的概率。

0 投票
0 回答
21 浏览

machine-learning - 如果数据集不平衡,你如何测试机器学习算法?

我有一个包含好文件和恶意文件的数据集。标记为 0 和 1。在数据集中有更多的恶意文件——比如 3000 个和 800 个好文件。尽管如此,我在逻辑回归、随机森林和 SVM 方面得到了很好的结果。我已经调整了要针对不平衡数据集进行调整的参数。召回率始终高于 0.90,准确率 0.86-0.9 AUC 分数始终在 0.87 到 0.9 左右,具体取决于算法。现在我的问题是,在现实生活中,将通过算法运行的文件大多是好的(数百万),而恶意文件将是几千。与我的数据集相反。这应该是我测试的问题吗?

为我的所有算法绘制的 ROC 曲线——测试集上的性能