我一直在用我的MSE解决这个问题,同时用回归进行预测。我在尝试构建的不同回归模型中也遇到了同样的问题。
问题是,我的MSE太庞大了。准确地说是83661743.99。我的R平方是0.91,这似乎不是问题。
我在安德鲁·吴恩达的斯坦福ML课程中手动实现了成本函数和梯度下降,我有一个合理的成本函数;但当我尝试用SKLearn库实现它时,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发布于 2020-04-27 20:17:44
由于您使用标准标准化进行缩放,因此数据集的值可以是巨大的。正如desertnaut所说,由于数据集的巨大价值,MSE没有被缩放,因此它可能是巨大的。您可以尝试使用MinMaxScaler对数据进行标准化,以获得0-1之间的iput
发布于 2020-04-28 04:38:10
我已经认识到我的方式的错误。MSE是1/n (样本数量)乘以实际响应减去预测响应平方的总和。因此,给定的误差将是预期误差值的平方。我应该注意的是RMSE,它会找到MSE的sqrt。我的预测也有偏差,这是因为我衡量了我的价值观。未缩放的X值给了我更好的预测。这一点我将不得不进行更多的调查,因为我不明白为什么。
https://stackoverflow.com/questions/61458289
复制相似问题