0

我一直在用我的 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
4

2 回答 2

0

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

于 2020-04-27T12:17:43.733 回答
0

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

于 2020-04-27T20:38:09.783 回答