【问题标题】:Using sample and class weights in sklearn在 sklearn 中使用样本和类权重
【发布时间】:2020-09-09 09:25:32
【问题描述】:

我正在尝试在高度不平衡的样本上运行随机森林。样本权重和类别权重都存在问题。但是,当我使用 sklearn 文档包含适当的权重时,我仍然得到高度不平衡的预测。例如,我的班级权重为

{'A': 0.05555555555555555, 'B': 1.0, 'C': 1.0}

这应该将数据重新加权为大约 60% A、25% B、15% C。但是,当我使用权重运行模型时,我在拟合类概率上得到或多或少相同的结果。我还尝试使用“平衡”选项进行测试,但我仍然得到高度偏斜的结果(预测 A 的每次观察的概率接近 1)。我已经尝试过使用和不使用样本权重以及使用和不使用类权重,我得到或多或少相同的结果。我执行不正确吗?

        clf=RandomForestClassifier(n_estimators=1000,class_weight=class_weights)
        clf=RandomForestClassifier(n_estimators=1000)
        clf.fit(x,y,sample_weight=weights)

        print("Accuracy: ",metrics.accuracy_score(y, clf.predict(x)))

        new_arts = pd.DataFrame(data=clf.predict_proba(full_data_scaled),
                                columns=clf.classes_,
                                index=full_data_scaled.index.values)

【问题讨论】:

    标签: python scikit-learn random-forest


    【解决方案1】:

    首先要检查的是分类器相对于数据集的实际维度。您在这两种情况下都使用 1000 个估算器。如果您使用的是小型数据集,这可能会高度过拟合。

    其次,我假设您使用基尼标准进行拆分。也许您可以检查标准“熵”是否产生相同的输出。

    【讨论】:

      猜你喜欢
      • 2021-04-27
      • 2020-10-07
      • 2018-02-22
      • 2018-09-07
      • 1970-01-01
      • 2016-04-11
      • 2021-04-11
      • 1970-01-01
      • 2023-03-27
      相关资源
      最近更新 更多