Среднеквадратическая ошибка огромна при использовании Scikit Learn - PullRequest
0 голосов
/ 27 апреля 2020

Я боролся с этой проблемой с моим MSE, предсказывая с регрессией. Я столкнулся с той же проблемой с различными регрессионными моделями, которые я пытался построить.

Проблема в том, что мое MSE огромно. 83661743,99, если быть точным. Мой квадрат R равен 0,91, что не представляется проблематичным c.

Я вручную реализовал функцию стоимости и градиентное снижение, выполняя курсовую работу в классах Эндрю Нг в Стэнфордском 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

Ответы [ 2 ]

0 голосов
/ 27 апреля 2020

Я понял ошибку моих путей. Значение MSE равно 1 / n (количество отсчетов), умноженному на сумму фактического ответа, вычтенного из прогнозируемого ответа SQUARED. Следовательно, данная ошибка будет приравнена к ожидаемому значению ошибки. то, что я должен был высматривать, было RMSE, который найдет площадь MSE. мои прогнозы тоже были неверны, и это потому, что я масштабировал свои ценности. Немасштабированные значения X дали мне намного лучшие прогнозы. Я должен разобраться с этим подробнее, так как не понимаю, почему.

0 голосов
/ 27 апреля 2020

Поскольку вы использовали стандартную нормализацию для масштабирования, значения набора данных могут быть огромными. Как сказал Дезернаут, MSE не масштабируется, поэтому он может быть огромным из-за больших значений набора данных. Вы можете попытаться нормализовать данные, используя MinMaxScaler, чтобы получить iput между [0-1]

...