gpt4 book ai didi

python - 使用 SMOTE 库在 Python 中平衡数据

转载 作者:太空宇宙 更新时间:2023-11-03 19:40:43 26 4
gpt4 key购买 nike

我想要平衡一组具有以下特征的训练数据,并将其分为 X_train 和 y_train。我的类(class)比例大致如下:

class A: 54%
class B: 45%
class C: 1%

所以我想按如下方式重新采样我的数据:

class A: 49%
class B: 41%
class C: 10%

我想使用的库是:

https://imbalanced-learn.readthedocs.io/en/stable/generated/imblearn.over_sampling.RandomOverSampler.html

并使用Smote作为平衡算法。我遇到的问题是我不知道如何使用这个库来做到这一点。我知道 Smote 算法,但我在使用这个库时遇到了一些困难。接下来我可以尝试什么?

最佳答案

你以前用过sklearn吗?这与它的工作原理非常相似。有效地使用 smote 本身就像在数据上运行模型以生成更多虚拟数据来平衡它。

此示例来自 imblearn page描述得很好:

>>> from collections import Counter
>>> from sklearn.datasets import make_classification
>>> from imblearn.over_sampling import SMOTE # doctest: +NORMALIZE_WHITESPACE
>>> X, y = make_classification(n_classes=2, class_sep=2,
... weights=[0.1, 0.9], n_informative=3, n_redundant=1, flip_y=0,
... n_features=20, n_clusters_per_class=1, n_samples=1000, random_state=10)
>>> print('Original dataset shape %s' % Counter(y))
Original dataset shape Counter({1: 900, 0: 100})
>>> sm = SMOTE(random_state=42)
>>> X_res, y_res = sm.fit_resample(X, y)
>>> print('Resampled dataset shape %s' % Counter(y_res))
Resampled dataset shape Counter({0: 900, 1: 900})

具体来说,当您拥有训练数据 X 和目标 y 时,您可以根据需要实例化具有随机状态的 SMOTE() 实例。然后将其拟合到数据X_res,y_res = sm.fit_resample(X,y)fit_resample() 合二为一,它将 SMOTE 算法适合您的数据集,然后使用新的过采样数据集转换(重新采样)您的数据集。

关于python - 使用 SMOTE 库在 Python 中平衡数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60442051/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com