You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何糖尿病数据集上LogisticRegression两种拟合方式的测试得分相同?

为什么训练集拟合与测试集拟合的LogisticRegression在测试集上得分完全相同?

我用糖尿病数据集做实验:先在训练集上拟合LogisticRegression模型,在测试集上得到的测试得分为0.802083;之后我在测试集上拟合该模型,再在测试集上评估,居然得到了完全相同的测试得分。这是什么原因?

实验代码如下:

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression

diab_cols = ['Pregnancies', 'Insulin', 'BMI','Glucose','BloodPressure','DiabetesPedigreeFunction'] 
X = df[diab_cols]# Features 
y = df.Outcome # Target variable 

X_train, X_test, y_train, y_test = train_test_split(X, y, 
    test_size=0.25, 
    random_state=0)

model = LogisticRegression().fit(X_train,y_train)  
model_test = LogisticRegression().fit( X_test, y_test)  

print("test_score",model.score(X_test,y_test))
print("test_score",model_test.score(X_test,y_test))

原因解析

这是小概率统计巧合,并非必然现象,具体可以从这几点理解:

  • 预测结果完全重合:训练集拟合的模型,和测试集拟合的模型,对测试集中所有样本的预测结果完全一致。后者虽然是在测试集上“死记硬背”训练,但刚好它学到的决策边界,和前者在训练集上学到的决策边界,在测试集样本上的预测输出完全匹配,最终得分自然相同。
  • 测试集样本量偏小:原数据集共768条样本,测试集占25%即192条。小样本量下,不同模型对所有样本预测一致的概率虽然低,但并非不可能发生。
  • 验证方法:你可以通过以下代码验证两个模型的预测结果是否完全一致:
import numpy as np
print(np.all(model.predict(X_test) == model_test.predict(X_test)))

如果输出True,就直接证明了两个模型对测试集的预测完全相同,这就是得分一致的核心原因。


内容的提问来源于stack exchange,提问作者rafine

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 16:39:52