计算传入的模型的 mse

我正在尝试绘制数据的均方误差,但我有点难以弄清楚如何做到这一点。我知道你需要“真实”值和“预测”值才能得到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


当年话下
浏览 88回答 1
1回答

qq_花开花谢_0

事情应该以这种方式完成: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))希望有所帮助。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python