kurmyza_pavel_lab_4 is ready
This commit is contained in:
parent
71cad406c2
commit
e034d93062
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