我觉得可能有人问过这个问题,但我不知道如何搜索它。基本上,我正在使用随机森林构建一个二进制分类器,并且有很多积极的结果,而不是消极的结果(2k vs ~20)。准确率当然是非常好的,因为测试集通常有0-1个负样本和超过1000个正样本。如果机器学习对于这种情况仍然可行,那么处理如此少量的负面情况的最佳方法是什么?或者数据只是无用的?
发布于 2018-07-24 10:57:59
正如您所提到的,您的数据集具有类的不平衡分布(2k vs ~20)。这种分布不允许您构建预测模型,因为该模型将罕见事件(负面结果)视为随机噪声,并且无法很好地预测新数据集。
在构建任何预测模型之前,您可能必须对罕见事件进行上采样,以使其在分布中保持平衡。您仍然可以尝试随机森林模型,该模型也适用于不平衡的数据集,但我不认为20vs2k分布在随机森林中也适用。您可以获得有关处理不平衡数据分布的更详细信息,您可以访问以下链接: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 2000https://stackoverflow.com/questions/51482633
复制相似问题