IIS_2023_1/tepechin_kirill_lab_6/README.md
2023-12-01 17:10:34 +04:00

5.7 KiB
Raw Blame History

Лабораторная работа №6, ПИбд-42 Тепечин Кирилл

Датасет:

Ссылка:

Smoking and Drinking Dataset with body signal

Подробности датасета

Столбец Пояснение
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

Преобразуем их в фиктивные переменные используя

data = pd.get_dummies(data, columns=['sex', 'DRK_YN'], drop_first=True)

Т.к датасет содержит слишком большое количество данных следует уменшить их размер до 10%

data = data.sample(frac=0.1, random_state=42)

Тесты:

Изначально нейронная сеть с дефолтными параметрами показывает ужасный результат

тест1

Поэтому применим GridSearchCV для оптимизации производительности модели

Выбранные параметры:

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

Сеть стала работать значительно лучше

Также стоит отметить что при уменьшении количества данных до 0.1% результат немного ухудшается

тест3

Однако при увеличении до 30% остается практически неизменным

тест4

Вывод:

Результаты указывают на то, что модель нейронной сети (MLPRegressor), как и модель полиномиальной регрессии демонстрируют некоторую способность предсказывать степень курения на основе данных из датасета.