.. | ||
lab6.py | ||
README.md | ||
smoking_drinking_dataset.csv | ||
test1.png | ||
test2.png | ||
test3.png | ||
test4.png |
test1 model = MLPRegressor(random_state=42)
test2
Лабораторная работа №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)
Тесты:
Изначально нейронная сеть с дефолтными параметрами показывает ужасный результат
Поэтому применим 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')
Теперь протестируем сеть с новыми параметрами
Сеть стала работать значительно лучше
Также стоит отметить что при уменьшении количества данных до 0.1% результат немного ухудшается
Однако при увеличении до 30% остается практически неизменным
Вывод:
Результаты указывают на то, что модель нейронной сети (MLPRegressor), как и модель полиномиальной регрессии демонстрируют некоторую способность предсказывать степень курения на основе данных из датасета.