使用Scikit Learn时,均方误差非常大

问题描述 投票:0回答:2

我通过回归预测一直在与我的MSE对抗这个问题。我尝试构建的不同回归模型遇到了相同的问题。

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

我在Andrew Ng的Stanford 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
python machine-learning scikit-learn linear-regression mean-square-error
2个回答
0
投票

当您使用标准归一化进行缩放时,数据集的值可能是巨大的。正如desertnaut所说,MSE不会缩放,因此由于数据集的价值很大,它可能很大。您可以尝试使用MinMaxScaler标准化数据以获取[0-1]之间的iput


0
投票

我已经了解了我的方式的错误。 MSE为1 / n(样本数)乘以实际响应之和再减去预测响应SQUARED。因此,给出的错误将被平方为期望的错误值。我应该寻找的是RMSE,它将找到MSE的sqrt。我的预测也无法实现,那是因为我扩展了自己的价值观。未缩放的X值给了我更好的预测。由于不明白原因,我将不得不对此进行更多研究。

© www.soinside.com 2019 - 2024. All rights reserved.