diff --git a/shestakova_maria_lab_5/README.md b/shestakova_maria_lab_5/README.md new file mode 100644 index 0000000..55bcf81 --- /dev/null +++ b/shestakova_maria_lab_5/README.md @@ -0,0 +1,29 @@ +### Задание: + +Использовать полиномиальную регрессию для данных, самостоятельно сформулировав задачу. Оценить, насколько хорошо она подходит для решения сформулированной вами задачи: предсказание качества сна на основе некоторых других признаков + +### Технологии: + +Библиотека Scikit-learn, библиотека pandas, библиотека matplotlib + +### Что делает лабораторная: + +Лабораторная работа предсказывает качество сна, используя следующие признаки: уровень стресса, возраст, пол, уровень физической активности и категория индекса массы тела. + +### Как запустить: + +Лабораторная работа запускается в файле `shestakova_maria_lab_5.py` через Run: открывается окно и появляется вывод в консоли + +### Вывод: + +График: + +![img2.png](scatter.png) + +На графике показаны синие маркеры - тестовые результаты и черные маркеры - предсказанные результаты + +Консоль: + +![результат в консоли](mark.png) + +По оценке пожно увидеть, что алгоритм показывает достаточно точные результаты обучения diff --git a/shestakova_maria_lab_5/mark.png b/shestakova_maria_lab_5/mark.png new file mode 100644 index 0000000..181c0ea Binary files /dev/null and b/shestakova_maria_lab_5/mark.png differ diff --git a/shestakova_maria_lab_5/scatter.png b/shestakova_maria_lab_5/scatter.png new file mode 100644 index 0000000..46b7849 Binary files /dev/null and b/shestakova_maria_lab_5/scatter.png differ diff --git a/shestakova_maria_lab_5/shestakova_maria_lab_5.py b/shestakova_maria_lab_5/shestakova_maria_lab_5.py new file mode 100644 index 0000000..437f582 --- /dev/null +++ b/shestakova_maria_lab_5/shestakova_maria_lab_5.py @@ -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() \ No newline at end of file