Невозможно определить разницу между значениями R^2 для тестирования и обучения.Python

Программы на Python
Ответить
Anonymous
 Невозможно определить разницу между значениями R^2 для тестирования и обучения.

Сообщение Anonymous »

Столкнулся с проблемой, когда у меня серьезно отклоняется значение R^2 для моих тестовых данных (-3,6), хотя мои тренировочные данные выглядят прилично (0,8). Данные могли иметь переобучение, но число настолько неверное, что это, должно быть, ошибка. Мне было поручено масштабировать X и Y с помощью нормализации Z-показателя. Я не удалил ни одного столбца, но очистил данные. Меня также проинструктировали пока не рассматривать это как полиномиальную систему.
# split data into train test split (80-20)
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.2, shuffle=True, random_state=5)

print(X_train.shape)
print(X_test.shape)
print(Y_train.shape)
print(Y_test.shape)

from sklearn.preprocessing import StandardScaler

scaler_X = StandardScaler()
scaler_Y = StandardScaler()

# fit scalers on training data only
X_train_scaled = scaler_X.fit_transform(X_train)
Y_train_scaled = scaler_Y.fit_transform(Y_train.values.reshape(-1, 1))

# transform test data using the same scalers
X_test_scaled = scaler_X.transform(X_test)
Y_test_scaled = scaler_Y.transform(Y_test.values.reshape(-1, 1))

X_train_scaled = pd.DataFrame(X_train_scaled, columns=X_train.columns)
X_test_scaled = pd.DataFrame(X_test_scaled, columns=X_test.columns)
Y_train_scaled = pd.DataFrame(Y_train_scaled, columns=['Y_train_scaled'])
Y_test_scaled = pd.DataFrame(Y_test_scaled, columns=['Y_test_scaled'])

#print(X_train_scaled)
#print(X_test_scaled)
#print(Y_train_scaled)
#print(Y_test_scaled)

print(X_train_scaled.describe())
print(Y_train_scaled.describe())
print(X_test_scaled.describe())
print(Y_test_scaled.describe())

# initialize the linear regressor
model = LinearRegression()

# fit the model
model.fit(X_train_scaled, Y_train_scaled)

# access model coefficients
print("Model slope is: ", model.coef_, "\n")

print("Model intercept is: ", model.intercept_)

# evaluating training performance
y_pred_train = model.predict(X_train_scaled)

r2_train = r2_score(Y_train_scaled, y_pred_train)
mse_train = mean_squared_error(Y_train_scaled, y_pred_train)
mape_train = mean_absolute_percentage_error(Y_train_scaled, y_pred_train)
rmse_train = root_mean_squared_error(Y_train_scaled, y_pred_train)

print("Coefficient of Determination for Training: ", r2_train, "\n")
print("Mean Squared Error for Training: ", mse_train, "\n")
print("Mean Absolute Percentage Error for Training: ", mape_train, "\n")
print("Root Mean Squared Error for Training: ", rmse_train, "\n")

# evaluating testing performances
y_pred_test = model.predict(X_test_scaled)

r2_test = r2_score(Y_test_scaled, y_pred_test)
mse_test = mean_squared_error(Y_test_scaled, y_pred_test)
mape_test = mean_absolute_percentage_error(Y_test_scaled, y_pred_test)
rmse_test = root_mean_squared_error(Y_test_scaled, y_pred_test)

print("Coefficient of Determination for Testing: ", r2_test, "\n")
print("Mean Squared Error for Testing: ", mse_test, "\n")
print("Mean Absolute Percentage Error for Testing: ", mape_test, "\n")
print("Root Mean Squared Error for Testing: ", rmse_test, "\n")


Подробнее здесь: https://stackoverflow.com/questions/798 ... -r2-values
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»