训练和考试成绩都很高。我的模型会过拟合吗?

数据挖掘 机器学习 scikit-学习 回归
2022-02-27 21:43:30

全部。目前,我正在使用 1990 年人口普查作为数据集(与 Aurélien Géron 在他的书中使用的相同)在回归器中工作以预测房屋中值。

到目前为止,我最好的结果是训练集的得分约为 0.96,带有 bagging 回归器的测试集得分约为 0.80。这是我一直在做的事情:

precisao_treino = clf.score(dados_treino_feat,dados_treino_targ) #training score
precisao_valid = clf.score(dados_valid_feat,dados_valid_targ) #test score



(0.9698880465469455, 0.8087685894971024)

但这是我感到困惑的地方。非常高的训练分数表明我的模型可能存在过度拟合。但是,考试成绩却保持了相对较好的成绩。所以我不知道我的模型是否过拟合或预测是否良好。有人可以向我解释这是一个坏模型还是好模型?


这是我的最终数据集的样子,使用单热编码:

['longitude',
 'latitude',
 'housing_median_age',
 'total_rooms',
 'total_bedrooms',
 'population',
 'households',
 'median_income',
 'median_house_value',
 '<1H OCEAN',
 'INLAND',
 'ISLAND',
 'NEAR BAY',
 'NEAR OCEAN']

我去除异常值的解决方案:

df = df[(np.abs(zscore(df)) < 6).all(axis=1)]

我的模型:

clf = ensemble.BaggingRegressor(n_estimators=20)
1个回答

过度拟合只不过是当模型试图学习在训练过程中提供给它的数据时。

在这种情况下,验证准确度会下降,因为模型无法解释和分类看不见的数据。

回顾模型的准确率,验证准确率飙升至 0.8,相当不错。

训练精度为 0.96,这是一个好兆头,也表明模型的泛化能力非常好,可以很好地对所有数据(训练和验证)进行分类。