From 004b648f947256f2b435cff162d8e3b93698948d Mon Sep 17 00:00:00 2001 From: sergeevevgen <alexevgenii@mail.ru> Date: Fri, 10 Nov 2023 03:25:00 +0400 Subject: [PATCH 1/3] create lab5 --- sergeev_evgenii_lab_5/readme.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 sergeev_evgenii_lab_5/readme.md diff --git a/sergeev_evgenii_lab_5/readme.md b/sergeev_evgenii_lab_5/readme.md new file mode 100644 index 0000000..e69de29 -- 2.25.1 From 183980443eb15a77b094b8652327a30fca6abb63 Mon Sep 17 00:00:00 2001 From: sergeevevgen <alexevgenii@mail.ru> Date: Mon, 13 Nov 2023 23:50:04 +0400 Subject: [PATCH 2/3] just start --- sergeev_evgenii_lab_5/lab5.py | 37 +++++++++++++++++++++++++++++++++ sergeev_evgenii_lab_5/readme.md | 16 ++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 sergeev_evgenii_lab_5/lab5.py diff --git a/sergeev_evgenii_lab_5/lab5.py b/sergeev_evgenii_lab_5/lab5.py new file mode 100644 index 0000000..29d08cc --- /dev/null +++ b/sergeev_evgenii_lab_5/lab5.py @@ -0,0 +1,37 @@ +# Импортируем необходимые библиотеки +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 + +# Загрузим данные +data = pd.read_csv("ваш_файл.csv") # Замените "ваш_файл.csv" на имя вашего файла данных + +# Выберем признаки (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'] + +# Разделим данные на тренировочный и тестовый наборы +X_train, X_test, y_train, y_test = train_test_split(features, target, test_size=0.2, random_state=42) + +# Масштабируем признаки для лучшей производительности модели +scaler = StandardScaler() +X_train_scaled = scaler.fit_transform(X_train) +X_test_scaled = scaler.transform(X_test) + +# Создаем модель гребневой регрессии +ridge_model = Ridge(alpha=1.0) # Можете изменить alpha в зависимости от необходимой регуляризации + +# Обучаем модель на тренировочных данных +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}") diff --git a/sergeev_evgenii_lab_5/readme.md b/sergeev_evgenii_lab_5/readme.md index e69de29..b7c8c3c 100644 --- a/sergeev_evgenii_lab_5/readme.md +++ b/sergeev_evgenii_lab_5/readme.md @@ -0,0 +1,16 @@ +# Задание +Предсказать, является ли транзакция мошеннической или нет на основе других данных о транзакции, таких как сумма транзакции, местоположение, банк, возраст и пол клиента +### Как запустить лабораторную работу: +ЛР запускается в файле zavrazhnova_svetlana_lab_5.py через Run, а затем в консоли должны появится вычисления + +### Технологии +Методы PolynomialFeatures и LogisticRegression из библиотеки sklearn + +### Что делает лабораторная: +Обучаются модели логистической и полиномиальной регрессии на обучающих данных и используются эти модели для предсказания мошеннических транзакций на тестовых данных. Оценивается точность каждой модели с помощью метрики accuracy. + +### Пример выходных значений: + + +### Вывод: +Точность полиномиальной регрессии и логистической регрессии равны 1.0, это означает, что обе модели предсказали метки классов на тестовом наборе данных без ошибок. То есть они смогли точно определить, является ли транзакция мошеннической или нет. -- 2.25.1 From fd3118c1c914a8c3d27c1e9ab7f0943ebdc3c7d8 Mon Sep 17 00:00:00 2001 From: sergeevevgen <alexevgenii@mail.ru> Date: Tue, 14 Nov 2023 01:27:22 +0400 Subject: [PATCH 3/3] done --- sergeev_evgenii_lab_5/lab5.py | 45 ++++++++++++++++++++++++--------- sergeev_evgenii_lab_5/readme.md | 35 ++++++++++++++++--------- 2 files changed, 56 insertions(+), 24 deletions(-) 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. Обучает модель и выводит результат по различным метрикам +### Результаты тестирования +По результатам тестирования, можно сказать следующее: -### Пример выходных значений: - +Вывод: +* Среднеквадратичная ошибка (MSE) - 39% - показывает самое большое отклонение +* Среднеабсолютное отклонение (MAE) - 29% - показывает средний уровень отклонения +* Коэффициент детерминации (R^2) - 32% - показывает уровень изменчивости целевой переменной -### Вывод: -Точность полиномиальной регрессии и логистической регрессии равны 1.0, это означает, что обе модели предсказали метки классов на тестовом наборе данных без ошибок. То есть они смогли точно определить, является ли транзакция мошеннической или нет. +Результаты показывают, что модель может быть улучшена, +так как имеется значительный уровень ошибки и только небольшая доля изменчивости данных объяснена моделью -- 2.25.1