混淆矩阵 - 不随预测模型而改变(Sklearn)

时间:2017-11-09 22:17:09

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

我有3个预测模型,我正在使用混淆矩阵评估其性能。 我得到了3个模型中每个模型的混淆矩阵的相同结果。 我希望不同的模型能够以不同的方式运行并产生不同的混淆矩阵。我是预测性建模的新手,所以我怀疑我正在犯“新的错误”。我正在使用的完整脚本位于GiThub上的Jupyter笔记本中here

3个模型的代码截图如下

有人可以指出出了什么问题吗? 干杯 麦克

enter image description here

2 个答案:

答案 0 :(得分:1)

如上所述:对测试数据做出预测。但请记住,你的目标是扭曲的!所以使用StratifiedKFolds或类似的东西。

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

很少有问题/建议: 1.您是否扩展了数据? 你使用过热编码吗? 2.使用决策树而不是森林/ XGBoost。易于过度配戴DT。 3.不要在NN中使用> 2个隐藏层,因为它也很容易过度配合。首先使用2。你的架构(30,30,30)有2个目标类似乎很奇怪。 4.如果你想使用> 2个隐藏层 - 去Keras或TF。你会发现很多功能可以帮助你不要过度配备。

答案 1 :(得分:-1)

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

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