## Лабораторная работа №6, ПИбд-42 Тепечин Кирилл ### Датасет: #### Ссылка: [Smoking and Drinking Dataset with body signal](https://www.kaggle.com/datasets/sooyoungher/smoking-drinking-dataset/data) #### Подробности датасета | Столбец | Пояснение | |------------------|:-----------------------------------------------------------------:| | sex | Пол(мужской, женский) | | age | Возраст(округлён) | | height | Рост(округлён) [см] | | weight | [кг] | | sight_left | зрение (левый) | | sight_left | зрение (правый) | | hear_left | слух (левое): 1 (нормальное), 2 (ненормальное) | | hear_right | слух (правое): 1 (нормальное), 2 (ненормальное) | | SBP | Систолическое артериальное давление [мм рт. ст.] | | DBP | Диастолическое артериальное давление [мм рт. ст.] | | BLDS | глюкоза в крови натощак [мг/дл] | | tot_chole | общий холестерин [мг/дл] | | HDL_chole | Холестерин ЛПВП [мг/дл] | | LDL_chole | Холестерин ЛПНП [мг/дл] | | triglyceride | триглицерид [мг/дл] | | hemoglobin | гемоглобин [г/дл] | | urine_protein | белок в моче, 1(-), 2(+/-), 3(+1), 4(+2), 5(+3), 6(+4) | | serum_creatinine | креатинин сыворотки (крови) [мг/дл] | | SGOT_AST | глутамат-оксалоацетат-трансаминаза / аспартат-трансаминаза [МЕ/л] | | SGOT_ALT | аланиновая трансаминаза [МЕ/л] | | gamma_GTP | γ-глутамилтранспептидаза [МЕ/л] | | SMK_stat_type_cd | Степень курения: 1 (никогда), 2 (бросил), 3 (курю) | | DRK_YN | Пьющий или нет | ### Как запустить лабораторную работу: Для запуска лабораторной работы необходимо запустить файл lab6.py ### Используемые технологии: * Python 3.12 * pandas * scikit-learn ### Что делает лабораторная работа: Эта лабораторная работа применяет нейронную сеть (MLPRegressor) к данным из файла для предсказания степени курения и оценивает ее эффективность используя среднеквадратичную ошибку и коэффициент детерминации (R-squared) ### Предварительная обработка данных: Изначально датасет имеет несколько категориальных признаков : *sex* , *DRK_YN* Преобразуем их в фиктивные переменные используя ````python data = pd.get_dummies(data, columns=['sex', 'DRK_YN'], drop_first=True) ```` Т.к датасет содержит слишком большое количество данных следует уменшить их размер до 10% ````python data = data.sample(frac=0.1, random_state=42) ```` ### Тесты: Изначально нейронная сеть с дефолтными параметрами показывает ужасный результат ![тест1](test1.png) Поэтому применим GridSearchCV для оптимизации производительности модели Выбранные параметры: ````python model = MLPRegressor(hidden_layer_sizes=(100,1), max_iter=500, learning_rate_init=0.001, random_state=42, alpha=0.0001, activation='tanh', solver='adam') ```` Теперь протестируем сеть с новыми параметрами ![тест2](test2.png) Сеть стала работать значительно лучше Также стоит отметить что при уменьшении количества данных до 0.1% результат немного ухудшается ![тест3](test3.png) Однако при увеличении до 30% остается практически неизменным ![тест4](test4.png) ### Вывод: Результаты указывают на то, что модель нейронной сети (MLPRegressor), как и модель полиномиальной регрессии демонстрируют некоторую способность предсказывать степень курения на основе данных из датасета.