【问题标题】:Mean squared error is enormous when using Scikit Learn使用 Scikit Learn 时均方误差很大
【发布时间】:2020-08-10 23:21:22
【问题描述】:

我一直在用我的 MSE 解决这个问题,同时用回归进行预测。我尝试构建的不同回归模型遇到了同样的问题。

问题是,我的 MSE 非常庞大。确切地说是83661743.99。我的 R 平方是 0.91,这似乎没有问题。

我在 Andrew Ng 的斯坦福 ML 课程中手动实现了成本函数和梯度下降,并且我有一个合理的成本函数;但是当我尝试使用 SKLearn lib 来实现它时,MSE 就不同了。我不知道我做错了什么,我需要一些帮助来检查它。

这是我使用的数据集的链接:https://www.kaggle.com/farhanmd29/50-startups

我的代码:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.preprocessing import LabelEncoder, StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
from sklearn.linear_model import LinearRegression

df = pd.read_csv('50_Startups.csv')

#checking the level of correlations between the predictors and response
sns.heatmap(df.corr(), annot=True)

#Splitting the predictors from the response
X = df.iloc[:,:-1].values
y = df.iloc[:,4].values


#Encoding the Categorical values
label_encoder_X = LabelEncoder()
X[:,3] = label_encoder_X.fit_transform(X[:,3])

#Feature Scaling
scaler = StandardScaler()
X = scaler.fit_transform(X)

#splitting train and test
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=0)

#Linear Regression
model = LinearRegression()
model.fit(X_train,y_train)

pred = model.predict(X_test)

#Cost Function
mse = mean_squared_error(y_test,pred)
mse

【问题讨论】:

  • “巨大”是多少?请分享价值。还要记住,与准确度等分类指标相比,MSE 等回归指标没有任何自然尺度,即不能通过简单的外观判断它们是“大”还是“低”——这取决于要预测的数据。
  • @desertnaut 我的值是 83661743.99。有趣的是我的 Rsquared 是 0.91
  • 如果这些值出现在问题中而不是 cmets 就好了——建议您编辑和更新您的帖子以包含它们

标签: python machine-learning scikit-learn linear-regression mean-square-error


【解决方案1】:

由于您使用标准标准化进行缩放,因此数据集的值可能非常庞大。正如desertnaut 所说,MSE 没有按比例缩放,因此由于数据集的值很大,它可能会很大。您可以尝试使用 MinMaxScaler 对数据进行归一化以获取 [0-1] 之间的输入

【讨论】:

  • 我之前试过了,我仍然有很大的价值。我也忘了补充说我的 R 平方是 0.91
【解决方案2】:

我已经理解了我的方式的错误。 MSE 是 1/n(样本数)乘以实际响应的总和减去预测响应的平方。因此,给出的误差将是预期误差值的平方。我应该注意的是 RMSE,它将找到 MSE 的 sqrt。我的预测也失败了,那是因为我调整了我的价值观。未缩放的 X 值给了我更好的预测。我将不得不研究更多,因为我不明白为什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-05
    • 2014-02-22
    • 2017-03-20
    • 2017-05-07
    • 2017-12-23
    • 2019-09-11
    • 2015-05-31
    • 2018-02-22
    相关资源
    最近更新 更多