首页 > 解决方案 > 混淆矩阵完美的结果。这可能是真的吗?

问题描述

我正在学习机器学习。我想检查我的模型的质量。

这里有一些示例代码:

log_reg = LogisticRegression(max_iter=1000, solver='liblinear', C=1)
log_reg.fit(X_train, y_train)
confusion_matrix(y_test, log_reg.predict(X_test))

我得到了:

array([[ 979,    0],
       [   0, 1052]], dtype=int64)

所以这意味着这个模型是完美的吗?也许我犯了一些错误。我不认为 100% 的 TN 和 TF 值是好的,因为它好得令人难以置信。

标签: validationscikit-learndata-science

解决方案


如果它好得令人难以置信,它可能是。检查信息是否泄漏到您的测试数据集中。由于多种原因,有关测试集的信息可能会泄漏到训练中。在 google 上阅读并了解来源。一个常见的来源是归一化。如果您确实将训练数据和测试数据一起标准化/标准化,则您正在将训练数据的均值和标准差信息传递给测试数据。此外,如果您使用的是时间序列数据,请确保您的测试数据集不是随机打乱的。Timeseries 数据集具有自相关性,前一个时间点有关于下一个时间点的信息。如果您将 t-1 数据点传递给训练并将 t 数据点传递给测试,它将表现得非常好。说了这么多,还有一个很好的可能性是,如果存在一个可以完美分离您的数据集的超平面,您可以获得这样的结果。大多数玩具数据集都可以使用复杂的技术完美分离。希望我能帮上一点忙。


推荐阅读