首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Scikit Learn时均方误差很大

使用Scikit Learn时均方误差很大
EN

Stack Overflow用户
提问于 2020-04-27 19:53:35
回答 2查看 3K关注 0票数 0

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

问题是,我的MSE太庞大了。准确地说是83661743.99。我的R平方是0.91,这似乎不是问题。

我在安德鲁·吴恩达的斯坦福ML课程中手动实现了成本函数和梯度下降,我有一个合理的成本函数;但当我尝试用SKLearn库实现它时,MSE是另一回事。我不知道我做错了什么,我需要一些帮助来检查它。

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

我的代码:

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

发布于 2020-04-27 20:17:44

由于您使用标准标准化进行缩放,因此数据集的值可以是巨大的。正如desertnaut所说,由于数据集的巨大价值,MSE没有被缩放,因此它可能是巨大的。您可以尝试使用MinMaxScaler对数据进行标准化,以获得0-1之间的iput

票数 0
EN

Stack Overflow用户

发布于 2020-04-28 04:38:10

我已经认识到我的方式的错误。MSE是1/n (样本数量)乘以实际响应减去预测响应平方的总和。因此,给定的误差将是预期误差值的平方。我应该注意的是RMSE,它会找到MSE的sqrt。我的预测也有偏差,这是因为我衡量了我的价值观。未缩放的X值给了我更好的预测。这一点我将不得不进行更多的调查,因为我不明白为什么。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61458289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档