This commit is contained in:
sergeevevgen 2023-11-14 01:27:22 +04:00
parent 183980443e
commit fd3118c1c9
2 changed files with 56 additions and 24 deletions

View File

@ -1,19 +1,31 @@
# Импортируем необходимые библиотеки # Импортируем необходимые библиотеки
import math
import pandas as pd import pandas as pd
from sklearn.model_selection import train_test_split from sklearn.model_selection import train_test_split
from sklearn.linear_model import Ridge from sklearn.linear_model import Ridge
from sklearn.metrics import mean_squared_error from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score
from sklearn.preprocessing import StandardScaler 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', label_encoder = LabelEncoder()
'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']] features_list = ['lead_time', 'stays_in_weekend_nights',
target = data['adr'] '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) 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) predictions = ridge_model.predict(X_test_scaled)
# Оцениваем производительность модели # Оцениваем производительность модели по MSE метрике
mse = mean_squared_error(y_test, predictions) mse = math.sqrt(mean_squared_error(y_test, predictions))
print(f"Среднеквадратичная ошибка (MSE): {mse}")
# Оцениваем производительность модели по 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}%")

View File

@ -1,16 +1,27 @@
# Задание # Лабораторная работа 5. Регрессия
Предсказать, является ли транзакция мошеннической или нет на основе других данных о транзакции, таких как сумма транзакции, местоположение, банк, возраст и пол клиента ## Задание
### Как запустить лабораторную работу: Использовать метод регрессии по варианту (24 == 4) для данных из таблицы, самостоятельно сформулировав задачу.
ЛР запускается в файле zavrazhnova_svetlana_lab_5.py через Run, а затем в консоли должны появится вычисления Оценить, насколько хорошо она подходит для решения сформулированной мной задачи.
### Технологии Ссылка на мой датасет: https://www.kaggle.com/datasets/mlardi/hotel-booking-demand-with-economic-indicators
Методы PolynomialFeatures и LogisticRegression из библиотеки sklearn ## Задача
Прогнозировать значение целевой переменной (доход) на основе набора экономических показателей,
используя гребневую регрессию.
### Запуск программы
Файл lab5.py содержит и запускает программу.
### Что делает лабораторная: ### Описание программы
Обучаются модели логистической и полиномиальной регрессии на обучающих данных и используются эти модели для предсказания мошеннических транзакций на тестовых данных. Оценивается точность каждой модели с помощью метрики accuracy. Программа состоит из двух частей:
1. Она считывает файл с данными о двух отелях: City Hotel и Resort Hotel. Содержит множество различных метрик
2. Далее определяет необходимые признаки для характеристики дохода
3. Обучает модель и выводит результат по различным метрикам
### Результаты тестирования
По результатам тестирования, можно сказать следующее:
### Пример выходных значений: Вывод:
![result.png](result.png) * Среднеквадратичная ошибка (MSE) - 39% - показывает самое большое отклонение
* Среднеабсолютное отклонение (MAE) - 29% - показывает средний уровень отклонения
* Коэффициент детерминации (R^2) - 32% - показывает уровень изменчивости целевой переменной
### Вывод: Результаты показывают, что модель может быть улучшена,
Точность полиномиальной регрессии и логистической регрессии равны 1.0, это означает, что обе модели предсказали метки классов на тестовом наборе данных без ошибок. То есть они смогли точно определить, является ли транзакция мошеннической или нет. так как имеется значительный уровень ошибки и только небольшая доля изменчивости данных объяснена моделью