Я работаю с набором данных размером около 400 000 x 250. У меня проблема с моделью, которая дает очень хороший результат R ^ 2 при тестировании на обучающем наборе, но очень плохо при использовании на тестовом наборе. Поначалу это звучит как переоснащение. Но данные разбиваются на набор для обучения / тестирования случайным образом, а набор данных довольно большой, поэтому я чувствую, что должно быть что-то еще. Какие-либо предложения?
Разделение набора данных на обучающий набор и тестовый набор
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(df.drop(['SalePrice'],
axis=1), df.SalePrice, test_size = 0.3)
Оценщик линейной регрессии Склерна
from sklearn import linear_model
linReg = linear_model.LinearRegression() # Create linear regression object
linReg.fit(X_train, y_train) # Train the model using the training sets
# Predict from training set
y_train_linreg = linReg.predict(X_train)
# Predict from test set
y_pred_linreg = linReg.predict(X_test)
Расчет метрики
from sklearn import metrics
metrics.r2_score(y_train, y_train_linreg)
metrics.r2_score(y_test, y_pred_linreg)
Оценка R ^ 2 при тестировании на обучающей выборке: 0,64
Оценка R ^ 2 при тестировании на тестовой выборке: -10 ^ 23 (приблизительно)