validation - 混淆矩阵完美的结果。这可能是真的吗?
问题描述
我正在学习机器学习。我想检查我的模型的质量。
这里有一些示例代码:
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 值是好的,因为它好得令人难以置信。
解决方案
如果它好得令人难以置信,它可能是。检查信息是否泄漏到您的测试数据集中。由于多种原因,有关测试集的信息可能会泄漏到训练中。在 google 上阅读并了解来源。一个常见的来源是归一化。如果您确实将训练数据和测试数据一起标准化/标准化,则您正在将训练数据的均值和标准差信息传递给测试数据。此外,如果您使用的是时间序列数据,请确保您的测试数据集不是随机打乱的。Timeseries 数据集具有自相关性,前一个时间点有关于下一个时间点的信息。如果您将 t-1 数据点传递给训练并将 t 数据点传递给测试,它将表现得非常好。说了这么多,还有一个很好的可能性是,如果存在一个可以完美分离您的数据集的超平面,您可以获得这样的结果。大多数玩具数据集都可以使用复杂的技术完美分离。希望我能帮上一点忙。
推荐阅读
- docker - 在我的 Kubernetes pod 中使用 OpenSSL 命令
- r - 根据 R 中的多个条件计算字符出现次数
- amazon-web-services - 如何在 EventBridge 中检索 EventDetails?
- javascript - 反应本机文件复制/移动进度
- android - FirebaseRecyclerOptions setQuery 澄清
- reactjs - useEffect 没有在刷新时运行
- servicestack - ServiceStack.Redis 认证 Redis Sentinel + Redis
- python - MSYS 安装 PyQt5 模块
- javascript - 在 Javascript 中将 Blob 转换为图像文件
- c++ - 我可以用逗号声明多个函数吗?