tepechin_kirill_lab_3

This commit is contained in:
KirillTepechin 2023-11-29 23:09:58 +04:00
parent a8c58683dd
commit d2627b6a38
4 changed files with 991441 additions and 0 deletions

View File

@ -0,0 +1,62 @@
## Лабораторная работа №3, ПИбд-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 | Пьющий или нет |
### Как запустить лабораторную работу:
Для запуска лабораторной работы необходимо запустить файл lab3.py
### Используемые технологии:
* Python 3.12
* pandas
* scikit-learn
### Что делает лабораторная работа:
Эта лабораторная программа загружает данные из csv файла, подготавливает их для обучения модели классификации дерева решений, обучает модель, выполняет прогнозы и оценивает ее точность, а затем выводит важность признаков.
Целевой признак - SMK_stat_type_cd - степень курения
### Предварительная обработка данных:
Изначально датасет имеет несколько категориальных признаков : *sex* , *DRK_YN*
Преобразуем их в фиктивные переменные используя
````python
data = pd.get_dummies(data, columns=['sex', 'DRK_YN'], drop_first=True)
````
### Результат:
![Результат](results.png)
### Вывод:
На основе этих результатов можно сделать выводы о том, что половой признак (*sex_Male*) оказывается наиболее влиятельным для классификации степени курения. Также можно выделить наименее важные признаки, это слух (*hear_left*, *hear_right*).
Точность модели составляет примерно 62%, говорит о том, что она классифицирует данные с относительно средней точностью.

View File

@ -0,0 +1,32 @@
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score
# Загрузка данных
data = pd.read_csv("smoking_driking_dataset.csv")
# Предварительная обработка данных
data = pd.get_dummies(data, columns=['sex', 'DRK_YN'], drop_first=True)
# Разделение данных на признаки (X) и целевую переменную (y)
X = data.drop(columns=['SMK_stat_type_cd'])
y = data['SMK_stat_type_cd']
# Разделение данных на обучающий и тестовый наборы
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.01, random_state=42)
# Создание и обучение модели
model = DecisionTreeClassifier(random_state=42)
model.fit(X_train, y_train)
# Предсказание на тестовом наборе
y_pred = model.predict(X_test)
# Оценка модели
accuracy = accuracy_score(y_test, y_pred)
print(f"Точность: {accuracy}")
# Важность признаков
feature_importance = pd.DataFrame({'Признак': X.columns, 'Важность': model.feature_importances_})
feature_importance = feature_importance.sort_values(by='Важность', ascending=False)
print("Важность признаков:\n", feature_importance)

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

File diff suppressed because it is too large Load Diff