Merge pull request 'kurmyza_pavel_lab_4 is ready' (#101) from kurmyza_pavel_lab_4 into main
Reviewed-on: http://student.git.athene.tech/Alexey/IIS_2023_1/pulls/101
This commit is contained in:
commit
2906d3886f
46
kurmyza_pavel_lab_4/README.md
Normal file
46
kurmyza_pavel_lab_4/README.md
Normal file
@ -0,0 +1,46 @@
|
||||
# Лабораторная работа №4
|
||||
|
||||
## ПИбд-41, Курмыза Павел
|
||||
|
||||
Датасет по варианту: https://www.kaggle.com/datasets/jessemostipak/hotel-booking-demand.
|
||||
|
||||
Данный набор данных содержит информацию о бронировании городской и курортной гостиниц и включает в себя такие
|
||||
сведения, как время бронирования, продолжительность пребывания, количество взрослых, детей и/или младенцев, количество
|
||||
свободных парковочных мест и т.д.
|
||||
|
||||
## Как запустить ЛР
|
||||
|
||||
- Запустить файл main.py
|
||||
|
||||
## Используемые технологии
|
||||
|
||||
- Язык программирования Python
|
||||
- Библиотеки: sklearn, numpy, pandas
|
||||
|
||||
## Что делает программа
|
||||
|
||||
Программа решает задачу регрессии на выбранном датасете: предсказание возможности бронирования номера в отеле
|
||||
определенного типа (курортный отель или гостиничный). Решение достигается в несколько этапов:
|
||||
|
||||
- Предобработка данных
|
||||
- Стандартизация данных и приведение их к виду, удобном для работы с моделями ML
|
||||
- Использование модели логистической регрессии
|
||||
- Оценка точности модели для решения данной задачи
|
||||
|
||||
## Тестирование
|
||||
|
||||
Для решения задачи регрессии была выбрана модель LogisticRegression.
|
||||
|
||||
LogisticRegression - это статистическая модель, которая в своей базовой форме использует логистическую функцию для
|
||||
моделирования двоичной зависимой переменной. В анализе регрессии, логистическая регрессия оценивает параметры
|
||||
логистической модели (вид бинарной регрессии).
|
||||
|
||||
Оценка точности модели:
|
||||
|
||||
![Отчет](report.jpg)
|
||||
|
||||
## Вывод
|
||||
|
||||
По итогу тестирования было выявлено, что данная модель может быть использована для решения задачи предсказания
|
||||
возможности бронирования номера в отеле определенного типа. Однако, оценка точности модели и матрица неточностей
|
||||
указывают на то, что в 20-30% случаев модель будет ошибаться.
|
119391
kurmyza_pavel_lab_4/hotel_bookings.csv
Normal file
119391
kurmyza_pavel_lab_4/hotel_bookings.csv
Normal file
File diff suppressed because it is too large
Load Diff
47
kurmyza_pavel_lab_4/main.py
Normal file
47
kurmyza_pavel_lab_4/main.py
Normal file
@ -0,0 +1,47 @@
|
||||
import pandas as pd
|
||||
from sklearn.metrics import accuracy_score, confusion_matrix
|
||||
from sklearn.metrics import classification_report
|
||||
from sklearn.preprocessing import LabelEncoder
|
||||
from sklearn.model_selection import train_test_split
|
||||
from sklearn.linear_model import LogisticRegression
|
||||
|
||||
# Считываем данные датасета
|
||||
data = pd.read_csv('hotel_bookings.csv')
|
||||
|
||||
# Удаляем столбцы, содержащие неопределенные данные
|
||||
data = data.drop(['country', 'agent', 'company'], axis=1)
|
||||
data = data.dropna()
|
||||
|
||||
# Находим категориальные признаки
|
||||
list_1 = list(data.columns)
|
||||
|
||||
list_cate = []
|
||||
for i in list_1:
|
||||
if data[i].dtype == 'object':
|
||||
list_cate.append(i)
|
||||
|
||||
# Производим кодирование признаков в числовой формат для того, чтобы модель могла с ними работать
|
||||
le = LabelEncoder()
|
||||
for i in list_cate:
|
||||
data[i] = le.fit_transform(data[i])
|
||||
|
||||
# Исключаем тип отеля из набора входных данных
|
||||
y = data['hotel']
|
||||
x = data.drop('hotel', axis=1)
|
||||
|
||||
# Выделяем данные для обучения и тестирования
|
||||
x_train, x_test, y_train, y_test = train_test_split(x, y, random_state=0, test_size=0.2)
|
||||
|
||||
# Создаем и обучаем модель логистической регрессии
|
||||
reg = LogisticRegression()
|
||||
reg.fit(x_train, y_train)
|
||||
|
||||
# Используем модель на тестовой выборке и оцениваем точность
|
||||
y_pred_reg = reg.predict(x_test)
|
||||
acc_reg = accuracy_score(y_test, y_pred_reg)
|
||||
|
||||
# Выводим результаты оценки точности и обучения
|
||||
print("Classification Report is:\n", classification_report(y_test, y_pred_reg))
|
||||
print("Confusion Matrix:\n", confusion_matrix(y_test, y_pred_reg))
|
||||
print("\nTraining Score:", reg.score(x_train, y_train) * 100)
|
||||
print(f"Accuracy Score of Logistic Regression is {acc_reg}")
|
BIN
kurmyza_pavel_lab_4/report.jpg
Normal file
BIN
kurmyza_pavel_lab_4/report.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 66 KiB |
Loading…
Reference in New Issue
Block a user