首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何处理标签数量差异较大的二进制分类

如何处理标签数量差异较大的二进制分类
EN

Stack Overflow用户
提问于 2018-07-23 23:41:50
回答 1查看 146关注 0票数 0

我觉得可能有人问过这个问题,但我不知道如何搜索它。基本上,我正在使用随机森林构建一个二进制分类器,并且有很多积极的结果,而不是消极的结果(2k vs ~20)。准确率当然是非常好的,因为测试集通常有0-1个负样本和超过1000个正样本。如果机器学习对于这种情况仍然可行,那么处理如此少量的负面情况的最佳方法是什么?或者数据只是无用的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-24 10:57:59

正如您所提到的,您的数据集具有类的不平衡分布(2k vs ~20)。这种分布不允许您构建预测模型,因为该模型将罕见事件(负面结果)视为随机噪声,并且无法很好地预测新数据集。

在构建任何预测模型之前,您可能必须对罕见事件进行上采样,以使其在分布中保持平衡。您仍然可以尝试随机森林模型,该模型也适用于不平衡的数据集,但我不认为20vs2k分布在随机森林中也适用。您可以获得有关处理不平衡数据分布的更详细信息,您可以访问以下链接:https://elitedatascience.com/imbalanced-classes

对数据进行上采样的示例代码如下所示:

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51482633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档