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.
+
+### Пример выходных значений:
+![result.png](result.png)
+
+### Вывод:
+Точность полиномиальной регрессии и логистической регрессии равны 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. Обучает модель и выводит результат по различным метрикам
+### Результаты тестирования
+По результатам тестирования, можно сказать следующее:
 
-### Пример выходных значений:
-![result.png](result.png)
+Вывод:
+* Среднеквадратичная ошибка (MSE) - 39% - показывает самое большое отклонение
+* Среднеабсолютное отклонение (MAE) - 29% - показывает средний уровень отклонения
+* Коэффициент детерминации (R^2) - 32% - показывает уровень изменчивости целевой переменной
 
-### Вывод:
-Точность полиномиальной регрессии и логистической регрессии равны 1.0, это означает, что обе модели предсказали метки классов на тестовом наборе данных без ошибок. То есть они смогли точно определить, является ли транзакция мошеннической или нет. 
+Результаты показывают, что модель может быть улучшена, 
+так как имеется значительный уровень ошибки и только небольшая доля изменчивости данных объяснена моделью
-- 
2.25.1