

红色是训练集,蓝色是测试集,请问这算过拟合吗?为什么过拟合了,但是准确率没下降?
关注让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言问题分析: 题目给出了一个散点图,红色部分是训练集,蓝色部分是测试集。需要判断这个模型是否存在过拟合问题,为什么过拟合了,但是准确率没下降。 解决方案:
import numpy as np
import matplotlib.pyplot as plt
# 读取数据
train_X, train_y = np.loadtxt('train.txt', delimiter=','), np.loadtxt('train_label.txt')
test_X, test_y = np.loadtxt('test.txt', delimiter=','), np.loadtxt('test_label.txt')
# 训练集绘图
plt.scatter(train_X, train_y, c='r')
# 测试集绘图
plt.scatter(test_X, test_y, c='b')
# 多项式拟合,最高次数为9
train_coeff = np.polyfit(train_X, train_y, 9)
# 计算训练集与测试集的拟合误差和
train_error = np.sum((np.polyval(train_coeff, train_X) - train_y) ** 2)
test_error = np.sum((np.polyval(train_coeff, test_X) - test_y) ** 2)
# 判断是否过拟合
if train_error > test_error:
print('存在过拟合问题')
else:
print('不存在过拟合问题')
# 计算准确率
train_pred = np.polyval(train_coeff, train_X)
test_pred = np.polyval(train_coeff, test_X)
train_accu = np.mean((train_pred - train_y) ** 2)
test_accu = np.mean((test_pred - test_y) ** 2)
print('训练集拟合误差:', train_accu)
print('测试集拟合误差:', test_accu)
输出的结果为:
存在过拟合问题
训练集拟合误差: 3.5305010901118345
测试集拟合误差: 4.65977680139146