我觉得可能有人问过这个问题,但我不知道如何搜索。基本上,我正在使用随机森林构建一个二元分类器,与否定结果相比,积极结果要多得多(2k vs〜20)。准确度当然是非常好的,因为测试集通常有0-1个负面的例子,超过一千个正面的例子。如果机器学习在这种情况下仍然可行,那么处理少数负面案例的最佳方法是什么?还是数据无用?
答案 0 :(得分:1)
如前所述,您的数据集的类分布不平衡(2k vs〜20)。这种分布不允许您建立预测模型,因为该模型会将罕见事件(阴性结果)视为随机噪声,并且无法很好地预测新数据集。
在建立任何预测模型之前,您可能必须对稀有事件进行升采样以使其在分布中达到平衡。您仍然可以尝试一个随机森林模型,该模型也适用于不平衡的数据集,但是我认为20 vs〜2k分布在随机森林中也不能很好地工作。您可以获得有关处理不平衡数据分布的更详细的信息,可以单击以下链接:https://elitedatascience.com/imbalanced-classes
用于对数据进行上采样的示例代码如下:
from sklearn.utils import resample
# Separate majority and minority classes
df_minority = df[df.pos_neg==0] #I classified negative class as '0'
df_majority = df[df.pos_neg==1]
# Upsample minority class
df_minority_upsampled = resample(df_minority,
replace=True, # sample with replacement
n_samples=11828, # to match majority class
random_state=123) # reproducible results
# Combine majority class with upsampled minority class
df_upsampled = pd.concat([df_majority, df_minority_upsampled])
# Display new class counts
df_upsampled.value_counts()
# 1 2000
# 0 2000