【问题标题】:Confusion Matrix - Not changing with predictive models (Sklearn)混淆矩阵 - 不随预测模型而改变(Sklearn)
【发布时间】:2018-04-23 01:52:57
【问题描述】:

我有 3 个预测模型,我正在使用混淆矩阵评估那里的性能。 对于 3 个模型中的每一个,我都得到了相同的混淆矩阵结果。 我预计不同的模型会表现不同并产生不同的混淆矩阵。我是预测建模的新手,所以我怀疑我犯了一个“新手错误”。我正在使用的完整脚本位于 GiThub 上的 Jupyter 笔记本中 here

下面是 3 个模型的代码截图

有人能指出哪里出了问题吗? 干杯 迈克

【问题讨论】:

  • 尝试grid-search 调整超参数。
  • 少说,你应该适合在火车上,但在测试中预测,这就是你获得有意义数据的地方。您是否还检查了所有不同模型的所有预测是否具有完全相同的值?
  • @Tbaki 是的,奇怪的是,所有 3 个模型的行值预测都是相同的。根据 Mohammed Kashif 的建议,我将使用 train_test_split 方法拆分数据以获得更有意义的数据,然后重新运行预测。

标签: python-3.x pandas machine-learning scikit-learn sklearn-pandas


【解决方案1】:

如前所述:对测试数据进行预测。但请记住,您的目标是有偏差的!所以使用 StratifiedKFolds 或类似的东西。

另外我猜你的数据有点损坏。虽然所有模型都显示相同的结果,但这可能是一个大错误。

几个问题/建议: 1. 你是否扩展了你的数据? 2.你使用one-hot-encoding吗? 2. 不要使用决策树,而是使用 Forests/XGBoost。容易与 DT 过拟合。 3. 不要在 NN 中使用 >2 个隐藏层,因为它也很容易过拟合。先用2。而且您的具有 2 个目标类的架构(30、30、30)看起来很奇怪。 4. 如果您希望使用 >2 个隐藏层 - 转到 Keras 或 TF。您会发现有许多功能可以帮助您避免过度拟合。

【讨论】:

    【解决方案2】:

    这仅仅是因为您使用相同的训练数据进行预测。由于您的模型已经在您进行预测的相同数据上进行了训练,因此它们将返回相同的结果(并最终返回相同的混淆矩阵)。您需要将数据集拆分为训练集和测试集。然后在训练集上训练你的分类器并在测试集上进行预测。

    您可以在 Sklearn 中使用train_test_split 将您的数据集拆分为训练集或测试集。

    【讨论】:

      猜你喜欢
      • 2021-09-29
      • 2019-10-15
      • 2020-07-31
      • 2011-09-30
      • 2021-07-08
      • 2016-11-27
      • 2018-04-10
      • 2015-12-10
      • 2021-03-15
      相关资源
      最近更新 更多