Найти тему
ЦифроПроф

Метрики регрессии

Для оценки качества линейных регрессионных моделей часто используется средняя квадратичная ошибка (MSE). Она измеряет среднее значение квадратов ошибок — то есть среднюю квадратичную разницу между оценёнными значениями и фактическим значением, является функцией потерь.

Разберём задачу, загрузим данные и изучим признаки.

Загрузите данные из файла flights.csv. Напечатайте на экране:

  • размер таблицы;
  • первые пять строк таблицы.

import pandas as pd

data = pd.read_csv('/datasets/flights.csv')

print(data.shape)
print(data.head(5))

Преобразуйте категориальный признак техникой OHE, избегайте дамми-ловушки. Приведите численные признаки к одному масштабу.

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler

data = pd.read_csv('/datasets/flights.csv')

data_ohe=pd.get_dummies(data, drop_first=True)
target = data_ohe['Arrival Delay']
features = data_ohe.drop(['Arrival Delay'] , axis=1)
features_train, features_valid, target_train, target_valid = train_test_split(
features, target, test_size=0.25, random_state=12345)

numeric = ['Day', 'Day Of Week', 'Origin Airport Delay Rate',
'Destination Airport Delay Rate', 'Scheduled Time', 'Distance',
'Scheduled Departure Hour', 'Scheduled Departure Minute']

scaler = StandardScaler()
scaler.fit(features_train[numeric])
features_train[numeric] = scaler.transform(features_train[numeric])
features_valid[numeric] = scaler.transform(features_valid[numeric])
print(features_train.shape)
print(features_valid.shape)

Загрузите данные из файла /datasets/flights_preprocessed.csv. Обучите линейную регрессию. Посчитайте значение MSE на валидационной выборке и сохраните его в переменной mse.

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error

data = pd.read_csv('/datasets/flights_preprocessed.csv')

target = data['Arrival Delay']
features = data.drop(['Arrival Delay'] , axis=1)
features_train, features_valid, target_train, target_valid = train_test_split(
features, target, test_size=0.25, random_state=12345)

model = LinearRegression()
model.fit(features_train, target_train)
# < напишите код здесь >
predicted_valid = model.predict(features_valid)
mse=mean_squared_error(target_valid, predicted_valid)

print("MSE =", mse)
print("RMSE =", mse ** 0.5)

Вычислите MSE и RMSE для константной модели: каждому объекту она прогнозирует среднее значение целевого признака. Сохраните её предсказания в переменной predicted_valid.

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error

data = pd.read_csv('/datasets/flights_preprocessed.csv')

target = data['Arrival Delay']
features = data.drop(['Arrival Delay'] , axis=1)
features_train, features_valid, target_train, target_valid = train_test_split(
features, target, test_size=0.25, random_state=12345)

model = LinearRegression()
model.fit(features_train, target_train)
predicted_valid = model.predict(features_valid)
mse = mean_squared_error(target_valid, predicted_valid)

print("Linear Regression")
print("MSE =", mse)
print("RMSE =", mse ** 0.5)

predicted_valid = pd.Series(target_train.mean(), index=target_valid.index)
mse=mean_squared_error(target_valid, predicted_valid)
print("Mean")
print("MSE =", mse)
print("RMSE =", mse ** 0.5)

Фото из открытых источников
Фото из открытых источников