【问题标题】:Knn classifier for Imbalanced dataset不平衡数据集的 Knn 分类器
【发布时间】:2019-11-05 22:49:20
【问题描述】:

我想估计分类器在我的不平衡数据集上的工作情况。当我尝试从 sklearn 拟合 KNN 分类器时,它对少数类一无所知。所以我所做的是我用 k = R 拟合分类器(其中 r 是不平衡比 1:R),我预测每个测试点的概率,如果少数类的分类器的概率输出,我将一个点分配给少数类大于 R(其中 r 是不平衡比 1: R)。我这样做是为了估计分类器的性能(F1-score)。我不需要生产中的分类器。我做的对吗?

【问题讨论】:

  • 欢迎来到 SO。解决这个问题的方法是基于频率的重采样。 this question 的可能重复项。
  • 我也处理过一次不平衡数据,那次我使用SMOTE并综合生成少数类示例,使得多数和少数类数据的比率变为1:1。你可以在这里查看 SMOTE imbalanced-learn.readthedocs.io/en/stable/generated/…
  • 有没有不重采样的方法??
  • 老实说,我不知道,但作为替代方案,您可以从数据集中随机选择多数类数据,使得比率始终为 1:1 与少数类。
  • 如果您不受使用分类器的限制,您可以尝试使用带有决策树或随机森林等参数的分类器,您可以在其中自己指定类权重。这样做你的模型也将开始选择少数类。实现细节请参考stackoverflow.com/questions/37522191/…

标签: machine-learning


【解决方案1】:

由于您在 cmets 中提到您不想使用重采样,因此一种出路是批处理。从您的多数类创建多个数据集,以便它们与少数类的比例为 1:1。训练多个模型,每个模型获得多数集的一部分和所有少数集。对所有模型进行预测并从它们中投票并决定您的最终结果。

但我建议使用 SMOTE 而不是这种方法。

【讨论】:

    猜你喜欢
    • 2015-01-28
    • 1970-01-01
    • 2017-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-27
    • 2018-09-13
    • 2016-04-02
    相关资源
    最近更新 更多