将不平衡学习与 Pandas DataFrame 结合使用
Using imbalanced-learn with Pandas DataFrame
我的数据集很不平衡。两个少数 classes 各包含一半的样本在多数 class 中。我的 RNN 模型无法了解关于人口最少 class.
的任何信息
我正在尝试使用 imbalanced-learn
库。例如:
sm = SMOTE(random_state=42, n_jobs=-1, k_neighbors=10)
X_train, y_train = sm.fit_resample(train.drop(['label], axis=1), train['label'])
如果 train.drop(['label]
仅包含所用特征的值, 有效。问题是我的 DataFrame 包含一个包含字符串作为值的附加列:我不能删除它,因为这些字符串是我的 RNN 的输入。如果我放弃它,我将无法分辨这些字符串属于过采样数据集的哪一行。
有没有办法保留所有列并告诉函数哪些列用于过采样?
如果字符串列是您的 RNN 的输入,那么假设您计划以某种方式对其进行编码(例如单热编码),那么只需在过采样之前对该列进行编码,然后 运行 过采样使用新的编码列而不是字符串列。
对于那些需要做类似事情的人,该库的合著者建议我使用 SMOTENC,它也可以处理分类变量(如字符串)。
我的数据集很不平衡。两个少数 classes 各包含一半的样本在多数 class 中。我的 RNN 模型无法了解关于人口最少 class.
的任何信息我正在尝试使用 imbalanced-learn
库。例如:
sm = SMOTE(random_state=42, n_jobs=-1, k_neighbors=10)
X_train, y_train = sm.fit_resample(train.drop(['label], axis=1), train['label'])
如果 train.drop(['label]
仅包含所用特征的值,有效。问题是我的 DataFrame 包含一个包含字符串作为值的附加列:我不能删除它,因为这些字符串是我的 RNN 的输入。如果我放弃它,我将无法分辨这些字符串属于过采样数据集的哪一行。
有没有办法保留所有列并告诉函数哪些列用于过采样?
如果字符串列是您的 RNN 的输入,那么假设您计划以某种方式对其进行编码(例如单热编码),那么只需在过采样之前对该列进行编码,然后 运行 过采样使用新的编码列而不是字符串列。
对于那些需要做类似事情的人,该库的合著者建议我使用 SMOTENC,它也可以处理分类变量(如字符串)。