Merge pull request 'shestakova_maria_lab_5 is ready' (#224) from shestakova_maria_lab_5 into main

Reviewed-on: http://student.git.athene.tech/Alexey/IIS_2023_1/pulls/224
This commit is contained in:
Alexey 2023-12-07 15:40:46 +04:00
commit 7086b2fad2
4 changed files with 69 additions and 0 deletions

View File

@ -0,0 +1,29 @@
### Задание:
Использовать полиномиальную регрессию для данных, самостоятельно сформулировав задачу. Оценить, насколько хорошо она подходит для решения сформулированной вами задачи: предсказание качества сна на основе некоторых других признаков
### Технологии:
Библиотека Scikit-learn, библиотека pandas, библиотека matplotlib
### Что делает лабораторная:
Лабораторная работа предсказывает качество сна, используя следующие признаки: уровень стресса, возраст, пол, уровень физической активности и категория индекса массы тела.
### Как запустить:
Лабораторная работа запускается в файле `shestakova_maria_lab_5.py` через Run: открывается окно и появляется вывод в консоли
### Вывод:
График:
![img2.png](scatter.png)
На графике показаны синие маркеры - тестовые результаты и черные маркеры - предсказанные результаты
Консоль:
![результат в консоли](mark.png)
По оценке пожно увидеть, что алгоритм показывает достаточно точные результаты обучения

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 557 KiB

View File

@ -0,0 +1,40 @@
from matplotlib import pyplot as plt
from sklearn import metrics
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import PolynomialFeatures, LabelEncoder
from sklearn.pipeline import Pipeline
import pandas as pd
# Загрузка данных из файла
data = pd.read_csv('sleep.csv')
# Преобразование категориальных признаков в числовые значения
label_encoder = LabelEncoder()
data['Gender'] = label_encoder.fit_transform(data['Gender'])
data['BMI Category'] = label_encoder.fit_transform(data['BMI Category'])
# Выделение признаков и целевой переменной
x = data[['Stress Level', 'Age', 'Gender', 'Physical Activity Level', 'BMI Category']]
y = data[['Quality of Sleep']]
# Разделение данных на обучающую и тестовую выборки
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.1, random_state=27)
# Создание модели с использованием полиномиальных признаков и линейной регрессии
poly = Pipeline([('poly', PolynomialFeatures(degree=3)), ('linear', LinearRegression())])
poly.fit(x_train, y_train)
# Предсказание целевой переменной на тестовой выборке
y_predicted = poly.predict(x_test)
# Вывод оценки качества модели
print('Оценка:')
print(metrics.r2_score(y_test, y_predicted))
# Визуализация сравнения истинных значений и предсказанных значений
plt.figure(1, figsize=(16, 9))
plt.title('Сравнение')
plt.scatter(x=[i for i in range(len(x_test))], y=y_test, c='blue', s=5)
plt.scatter(x=[i for i in range(len(x_test))], y=y_predicted, c='black', s=5)
plt.show()