为了账号安全,请及时绑定邮箱和手机立即绑定

计算传入的模型的 mse

计算传入的模型的 mse

当年话下 2022-08-25 15:53:44
我正在尝试绘制数据的均方误差,但我有点难以弄清楚如何做到这一点。我知道你需要“真实”值和“预测”值才能得到mse,但是我的项目的布局方式非常混乱。我有一个方法,其中我生成一个模型,如下所示:def fit_curve(X, y, degree):    poly_features = PolynomialFeatures(degree = degree)    x_poly = poly_features.fit_transform(X)    linreg = LinearRegression()    model = linreg.fit(x_poly, y)    return model这将返回已训练的模型。然后,我应该找到所述模型的均方误差。我不确定我应该如何执行此操作,因为模型已经在没有返回预测值的情况下进行了训练。现在我计算mse的方法是:def mse(X, y, degree, model):    poly_features = PolynomialFeatures(degree = degree)    linreg = LinearRegression()    x_poly = poly_features.fit_transform(X)    linreg.fit(x_poly, y)    y_predict = linreg.predict(x_poly)    mse = mean_squared_error(y_predict, y)    return mse我觉得与.不幸的是,指南说这是我需要这样做的方式(采取,,和。msefit_curvemseXydegreemodel我认为还值得注意的是,我目前的工作正常,直到大约13-14度,它在图表上生成的答案与我给出的解决方案不匹配。我不确定为什么它不能完美地工作,因为我认为这是正确的想法。mse
查看完整描述

1 回答

?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

事情应该以这种方式完成:


1) 将 X 和 y 拆分为训练集和测试集。您可以使用train_test_split。您可以选择test_size(我以0.33为例)和random_state(这个有助于提高可重复性)。


X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)

2) 使用X_train和y_train拟合模型(特此为线性回归)。你有一些特征生成方法(多项式方法),这很棒。将其与训练数据一起使用。


poly_features = PolynomialFeatures(degree=degree)

linreg = LinearRegression()

X_train_poly = poly_features.fit_transform(X_train)

linreg.fit(X_train_poly, y_train)

3) 通过查看拟合模型是否可以正确预测未见过的数据(X_test)来评估拟合模型。为此,您确实可以将mean_squared_error与 model.predict(X_test) 和 y_test 一起使用。请注意,您必须对X_test应用与X_train相同的转换(这就是我们首先使用poly_features.transform 的原因)


X_test_poly = poly_features.transform(X_test)

print(mean_squared_error(linreg.predict(X_test_poly), y_test))

希望有所帮助。


查看完整回答
反对 回复 2022-08-25
  • 1 回答
  • 0 关注
  • 85 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信