diff --git a/sergeev_evgenii_lab_5/lab5.py b/sergeev_evgenii_lab_5/lab5.py index 29d08cc..0ce0fe4 100644 --- a/sergeev_evgenii_lab_5/lab5.py +++ b/sergeev_evgenii_lab_5/lab5.py @@ -1,19 +1,31 @@ # Импортируем необходимые библиотеки +import math import pandas as pd from sklearn.model_selection import train_test_split from sklearn.linear_model import Ridge -from sklearn.metrics import mean_squared_error -from sklearn.preprocessing import StandardScaler +from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score +from sklearn.preprocessing import StandardScaler, LabelEncoder # Загрузим данные -data = pd.read_csv("ваш_файл.csv") # Замените "ваш_файл.csv" на имя вашего файла данных +df = pd.read_csv("hotel_bookings_raw.csv") +df.dropna(inplace=True) -# Выберем признаки (features) и целевую переменную (target) -features = data[['lead_time', 'arrival_date_year', 'arrival_date_week_number', 'stays_in_weekend_nights', - 'stays_in_week_nights', 'adults', 'children', 'babies', 'previous_cancellations', - 'previous_bookings_not_canceled', 'booking_changes', 'days_in_waiting_list', - 'required_car_parking_spaces', 'total_of_special_requests']] -target = data['adr'] +# Объявляю объект для преобразования строковых значений в числовые +label_encoder = LabelEncoder() + +# Выберем признаки и целевую переменную (доход) +features_list = ['lead_time', 'stays_in_weekend_nights', + 'stays_in_week_nights', 'adults', 'children', 'babies', 'meal', 'customer_type', + 'previous_cancellations', + 'previous_bookings_not_canceled', 'required_car_parking_spaces', + 'CPI_AVG', 'INFLATION', 'INFLATION_CHG', 'GDP', 'CPI_HOTELS'] +features = df[features_list].copy() + +# Применяю к каждому столбцу признака преобразования +for f in features_list: + features[f] = label_encoder.fit_transform(features[f]) + +target = df['adr'].copy() # Разделим данные на тренировочный и тестовый наборы X_train, X_test, y_train, y_test = train_test_split(features, target, test_size=0.2, random_state=42) @@ -32,6 +44,15 @@ ridge_model.fit(X_train_scaled, y_train) # Делаем предсказания на тестовых данных predictions = ridge_model.predict(X_test_scaled) -# Оцениваем производительность модели -mse = mean_squared_error(y_test, predictions) -print(f"Среднеквадратичная ошибка (MSE): {mse}") +# Оцениваем производительность модели по MSE метрике +mse = math.sqrt(mean_squared_error(y_test, predictions)) + +# Оцениваем производительность модели по MAE метрике +mae = mean_absolute_error(y_test, predictions) + +# Оцениваем производительность модели по R^2 метрике +r2 = r2_score(y_test, predictions) + +print(f"Среднеквадратичная ошибка (MSE): {round(mse, 2)}%") +print(f"Среднеабсолютное отклонение (MAE): {round(mae, 2)}%") +print(f"Коэффициент детерминации (R^2): {round(r2, 4) * 100}%") diff --git a/sergeev_evgenii_lab_5/readme.md b/sergeev_evgenii_lab_5/readme.md index b7c8c3c..fe20ee6 100644 --- a/sergeev_evgenii_lab_5/readme.md +++ b/sergeev_evgenii_lab_5/readme.md @@ -1,16 +1,27 @@ -# Задание -Предсказать, является ли транзакция мошеннической или нет на основе других данных о транзакции, таких как сумма транзакции, местоположение, банк, возраст и пол клиента -### Как запустить лабораторную работу: -ЛР запускается в файле zavrazhnova_svetlana_lab_5.py через Run, а затем в консоли должны появится вычисления +# Лабораторная работа 5. Регрессия +## Задание +Использовать метод регрессии по варианту (24 == 4) для данных из таблицы, самостоятельно сформулировав задачу. +Оценить, насколько хорошо она подходит для решения сформулированной мной задачи. -### Технологии -Методы PolynomialFeatures и LogisticRegression из библиотеки sklearn +Ссылка на мой датасет: https://www.kaggle.com/datasets/mlardi/hotel-booking-demand-with-economic-indicators +## Задача +Прогнозировать значение целевой переменной (доход) на основе набора экономических показателей, +используя гребневую регрессию. +### Запуск программы +Файл lab5.py содержит и запускает программу. -### Что делает лабораторная: -Обучаются модели логистической и полиномиальной регрессии на обучающих данных и используются эти модели для предсказания мошеннических транзакций на тестовых данных. Оценивается точность каждой модели с помощью метрики accuracy. +### Описание программы +Программа состоит из двух частей: +1. Она считывает файл с данными о двух отелях: City Hotel и Resort Hotel. Содержит множество различных метрик +2. Далее определяет необходимые признаки для характеристики дохода +3. Обучает модель и выводит результат по различным метрикам +### Результаты тестирования +По результатам тестирования, можно сказать следующее: -### Пример выходных значений: -![result.png](result.png) +Вывод: +* Среднеквадратичная ошибка (MSE) - 39% - показывает самое большое отклонение +* Среднеабсолютное отклонение (MAE) - 29% - показывает средний уровень отклонения +* Коэффициент детерминации (R^2) - 32% - показывает уровень изменчивости целевой переменной -### Вывод: -Точность полиномиальной регрессии и логистической регрессии равны 1.0, это означает, что обе модели предсказали метки классов на тестовом наборе данных без ошибок. То есть они смогли точно определить, является ли транзакция мошеннической или нет. +Результаты показывают, что модель может быть улучшена, +так как имеется значительный уровень ошибки и только небольшая доля изменчивости данных объяснена моделью