问题标签 [smote]

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

python - SMOTE 不起作用时的罕见事件分类模型

我有一个目标变量中包含罕见事件的数据框 - label=1 小于 1%,我想建立一个分类模型。

所有经典模型的性能都很差,使用 SMOTE 或其他采样技术并没有什么不同。

是否有其他成功的技术或模型来训练极其罕见的事件?

我想尝试 GEV 广义极值回归,但我没有找到关于 Python 代码的好的解释。

有人熟悉这个模型吗?

0 投票
1 回答
284 浏览

python - 在 Pandas 中将过采样数据集保存为 csv 文件

我是 Python 新手,如果太简单,请提前道歉。找不到任何东西,这个问题没有帮助。

我的代码是

如何保存过采样数据集以供将来工作?

我试过了

出错了

感谢任何提示!

0 投票
1 回答
515 浏览

r - 用于不平衡数据集的 KNN 并添加 SMOTE 以提高性能但结果最差

我有一个名为酵母4 的不平衡数据集。记录分为目标“正面”和“负面”两类。正类只占总比例的3%。我使用了 kNN 算法进行分类,我没有指定 k,但我对训练数据使用了 5 折交叉验证。我发现:auc_knn_none = 0.7062473。我很高兴添加一种过采样算法来提高模型的质量。所以我使用了 SMOTE 算法,而且我没有指定 k ok kNN,我对训练数据使用了 5 折交叉验证。但这一次,我发现:auc_knn_smote = 0.56676。通常 auc_knn_smote 必须高于 auc_knn_none ,所以有一些问题,我不知道问题出在哪里。这是我的代码:

在这里,我对数据进行了缩放和居中,将任何负值设置为 0,将其他所有值设置为 1。这是我使用的函数:

我上面提到并使用此功能找到的结果是:

感谢您的任何帮助!

0 投票
2 回答
493 浏览

python - 在 Python 中对稀疏数据集进行过采样

我有一个包含多标签数据的数据集。共有 20 个标签(从 0 到 20),它们之间的分布不平衡。以下是数据概览:

我希望对数据进行过度采样并在标签之间取得平衡。我遇到了一些方法,例如SMOTESMOTENC但它们都需要将数据拆分为训练集和测试集,并且它们不适用于稀疏数据。有什么方法可以在拆分前的预处理步骤中对整个数据执行此操作?

0 投票
1 回答
1903 浏览

python - 如何在 SMOTE 算法中使用字典对多类输入数据进行不同的重采样?

我想使用库在 python 中使用 SMOTE 算法执行过采样imblearn.over_sampling。我的输入数据有四个目标类。我不想对所有少数类分布进行过度采样以匹配多数类分布。我想以不同的方式对我的每个少数族裔进行过采样。

当我使用时SMOTE(sampling_strategy = 1, k_neighbors=2,random_state = 1000),出现以下错误。

然后,根据错误,我使用字典作为“sampling_strategy”,如下所示,

但是,它给出了以下错误,

有谁知道我们如何定义字典以使用 SMOTE 对数据进行不同的过采样?

0 投票
1 回答
198 浏览

python - SMOTE 用于平衡数据

我正在尝试训练 GradientBoosting 分类器。由于我的数据不平衡,我正在考虑 SMOTE 来平衡它。我尝试如下:

但我有这个错误:

我不知道应该替换什么以及如何将 SMOTE 与 X_train 和 y_train 一起使用。你能请我如何按正确的顺序使用它吗?

0 投票
1 回答
353 浏览

python - 如何解释 imblearn 管道的预测?

我有一个imblearn(不是 sklearn)管道,包括以下步骤:

  1. 列选择器
  2. 预处理管道(不同列上带有 OneHotEncoders 和 CountVectorizers 的 ColumnTransformer)
  3. imblearn 的 SMOTE
  4. XGB分类器

我有一个表格数据集,我正在尝试解释我的预测。我设法通过一些工作制定了特征重要性图,但无法让 eli5 或石灰工作。

Lime 要求我将数据转换为上次转换之前的状态(因为管道中的转换器(如自定义矢量化器)会创建新列)。原则上,我可以像这样分割我的管道:pipeline[:-1].predict(instance). 但是,我收到以下错误:{AttributeError}'SMOTE' object has no attribute 'predict'.

我还尝试了一个 eli5 解释器,因为它应该与 Sklearn Pipelines 一起使用。但是,运行后eli5.sklearn.explain_prediction.explain_prediction_sklearn_not_supported(pipeline, instance_to_explain)我收到不支持分类器的消息。

将不胜感激有关如何进行此操作的任何想法。

0 投票
1 回答
2830 浏览

python-3.x - 仅对分类变量使用 SMOTE-NC

我正在处理一个只包含分类特征的数据框。为了重现我面临的问题,我将制作以下示例:

我要将数据拆分为测试和训练,并将 col3 作为我的目标特征。

在 X_train 中,col1 和 col2 是我的分类特征,因此索引 0 和 1,因此我将 SMOTE-NC 执行为:

为此我收到以下错误:

鉴于 SMOTE-NC 旨在处理分类变量这一事实,我想知道如何解决这个问题?另请注意,我的目标变量是多类的,而不是二进制的,我认为这不会在这个级别引起任何问题。

0 投票
1 回答
550 浏览

machine-learning - SMOTE 重采样产生 nan 值

我正在使用 SMOTE 对少数数据集进行过采样。我的代码如下:

我使用如下语句检查 features_coded、labels、X_train 和 y_train:

我很确定它们在过采样之前不包含任何 nan 值。但是,重采样后,X_train 数据帧中有很多 nan 值。

以防万一您想知道:这是我在过采样之前的数据帧(保存为 csv 文件),没有任何遗漏。 过采样前的数据集

这是我过采样后的数据框(保存为 csv 文件),有很多空值! 过采样后的相同数据集

有什么问题吗?

0 投票
1 回答
153 浏览

pandas - 为什么smogn非常慢?

我正在使用 smoter 来平衡我的回归数据。我有 130k 个样本、3 个特征列和 1 个目标列。Smoter 需要很长时间才能平衡数据。例如,通过学习分类,它需要几秒钟。我做错了什么还是只是数据的大小?smoter 估计平衡所有数据的时间约为 20 小时。我还检查了例如 20% 的数据的情况如何,因此 13k 个样本,估计时间约为 2 小时......