Merge pull request 'verina_daria lab 5' (#190) from verina_daria_lab_5 into main
Reviewed-on: http://student.git.athene.tech/Alexey/IIS_2023_1/pulls/190
This commit is contained in:
commit
25ce8138c3
38
verina_daria_lab_5/README.md
Normal file
38
verina_daria_lab_5/README.md
Normal file
@ -0,0 +1,38 @@
|
||||
## Лабораторная работа №5
|
||||
### Регрессия
|
||||
### Задание
|
||||
Использовать регрессию по варианту для данных из таблицы 1 по варианту(таблица 10),самостоятельно сформулировав задачу. Оценить, насколько хорошо онаподходит для решения сформулированной вами задачи.
|
||||
|
||||
### Как запустить лабораторную работу:
|
||||
|
||||
* установить python, numpy, matplotlib, sklearn
|
||||
* запустить проект при помощи IDE pyCharm
|
||||
|
||||
### Какие технологии использовались:
|
||||
|
||||
* Язык программирования `Python`, библиотеки matplotlib, sklearn, pandas
|
||||
* Среда разработки `PyCharm`
|
||||
|
||||
### Что делает лабораторная работа:
|
||||
|
||||
Программа реализует модель логистической регрессии для предсказания пола (мужской/женский) на основе уровня активности, веса и роста. Она обучается на тренировочных данных, затем делает предсказания на тестовом наборе, вычисляет метрики оценки модели (точность, матрицу ошибок, отчет о классификации) и визуализирует результаты на диаграмме рассеяния.
|
||||
|
||||
|
||||
### Результаты:
|
||||
![img.png](img.png)
|
||||
Accuracy (Точность): 80% - доля правильных предсказаний;
|
||||
|
||||
Confusion Matrix (Матрица ошибок):
|
||||
True Positive (TP): 10 - правильно предсказанные Female;
|
||||
True Negative (TN): 6 - правильно предсказанные Male;
|
||||
False Positive (FP): 3 - ошибочно предсказанные Female (вместо Male);
|
||||
False Negative (FN): 1 - ошибочно предсказанные Male (вместо Female);
|
||||
Classification Report (Отчет о классификации):
|
||||
* Precision (Точность) для Female: 91% - доля правильно предсказанных Female относительно всех предсказанных Female;
|
||||
* Recall (Полнота) для Female: 77% - доля правильно предсказанных Female относительно всех реальных Female;
|
||||
* F1-score для Female: 83% - среднее гармоническое между точностью и полнотой для Female;
|
||||
* Поддержка (support) для Female: 13 - количество образцов Female в тестовом наборе;
|
||||
* Аналогичные метрики для Male также представлены.
|
||||
|
||||
### Вывод:
|
||||
Модель логистической регрессии, обученная на данных об уровне активности, весе и росте, достигла точности 80%. Она успешно предсказывает пол (Female/Male) с высокой точностью и полнотой, как указано в матрице ошибок и отчете о классификации.
|
BIN
verina_daria_lab_5/img.png
Normal file
BIN
verina_daria_lab_5/img.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 39 KiB |
58
verina_daria_lab_5/main.py
Normal file
58
verina_daria_lab_5/main.py
Normal file
@ -0,0 +1,58 @@
|
||||
import pandas as pd
|
||||
import matplotlib.pyplot as plt
|
||||
from sklearn.model_selection import train_test_split
|
||||
from sklearn.linear_model import LogisticRegression
|
||||
from sklearn.preprocessing import StandardScaler, LabelEncoder
|
||||
from sklearn.metrics import accuracy_score, classification_report, confusion_matrix
|
||||
|
||||
# Загрузка данных
|
||||
data = pd.read_csv('person_types.csv')
|
||||
|
||||
# Выбор переменных для модели
|
||||
features = ['ACTIVITY_LEVEL', 'WEIGHT', 'HEIGHT']
|
||||
|
||||
# Отбор нужных столбцов
|
||||
df = data[features + ['SEX']]
|
||||
|
||||
# Удаление строк с пропущенными значениями
|
||||
df = df.dropna()
|
||||
|
||||
# Преобразование строковых значений в числа
|
||||
le = LabelEncoder()
|
||||
df['ACTIVITY_LEVEL'] = le.fit_transform(df['ACTIVITY_LEVEL'])
|
||||
|
||||
# Разделение на признаки и целевую переменную
|
||||
X = df.drop('SEX', axis=1)
|
||||
y = df['SEX']
|
||||
|
||||
# Разделение на тренировочный и тестовый наборы
|
||||
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
|
||||
|
||||
# Стандартизация признаков
|
||||
scaler = StandardScaler()
|
||||
X_train_scaled = scaler.fit_transform(X_train)
|
||||
X_test_scaled = scaler.transform(X_test)
|
||||
|
||||
# Создание и обучение логистической регрессии
|
||||
model = LogisticRegression()
|
||||
model.fit(X_train_scaled, y_train)
|
||||
|
||||
# Предсказание на тестовом наборе
|
||||
y_pred = model.predict(X_test_scaled)
|
||||
|
||||
# Оценка качества модели
|
||||
accuracy = accuracy_score(y_test, y_pred)
|
||||
conf_matrix = confusion_matrix(y_test, y_pred)
|
||||
class_report = classification_report(y_test, y_pred)
|
||||
|
||||
print(f'Accuracy: {accuracy}')
|
||||
print(f'Confusion Matrix:\n{conf_matrix}')
|
||||
print(f'Classification Report:\n{class_report}')
|
||||
|
||||
# Визуализация результатов
|
||||
plt.scatter(X_test['WEIGHT'], y_test, color='black', label='Actual')
|
||||
plt.scatter(X_test['WEIGHT'], y_pred, color='blue', label='Predicted', marker='x')
|
||||
plt.xlabel('Weight')
|
||||
plt.ylabel('Sex')
|
||||
plt.legend()
|
||||
plt.show()
|
98
verina_daria_lab_5/person_types.csv
Normal file
98
verina_daria_lab_5/person_types.csv
Normal file
@ -0,0 +1,98 @@
|
||||
S_No,AGE,HEIGHT,WEIGHT,SEX,ACTIVITY_LEVEL,PAIN_1,PAIN_2,PAIN_3,PAIN_4,MBTI,E,I,S,N,T,F,J,P,POSTURE
|
||||
1,53,62,125,Female,Low,0,0,0,0,ESFJ,18,3,17,9,9,13,18,4,A
|
||||
2,52,69,157,Male,High,7,8,5,3,ISTJ,6,15,14,12,21,3,13,9,B
|
||||
3,30,69,200,Male,High,0,0,0,0,ESTJ,15,6,16,10,15,9,12,10,A
|
||||
4,51,66,175,Male,Moderate,9.5,9.5,9.5,1.5,ISTJ,6,15,21,5,13,11,19,3,D
|
||||
5,45,63,199,Female,Moderate,4,5,2,2,ENFJ,14,7,20,6,9,15,16,6,A
|
||||
6,68,74,182,Male,Low,0,2.5,1.5,0,ISFP,4,17,17,9,11,13,4,18,D
|
||||
7,62,68,263,Male,Low,7,10,10,10,ISTP,7,14,20,6,14,10,9,13,B
|
||||
8,65,61,143,Female,Low,0,9,5,10,ESTJ,17,4,17,9,19,5,17,5,D
|
||||
9,66,67,180,Male,Low,0.5,3.5,0.5,9.5,ESFJ,19,2,18,8,11,13,13,9,C
|
||||
10,58,69,165,Male,Low,0,7.5,7,3,INFJ,5,16,13,13,11,13,17,5,D
|
||||
11,61,67,210,Male,Low,5,0,0,9,ENTP,11,10,6,20,16,8,10,12,B
|
||||
12,33,62,120,Female,Low,0,3,0,0,ISFJ,2,19,22,4,9,15,12,10,B
|
||||
13,48,64,127,Female,Low,5,7,8,7,ESFJ,13,8,14,12,9,15,14,8,D
|
||||
14,57,68,185,Male,Low,2.5,7.5,1.5,5.5,ENTJ,16,5,12,14,15,9,17,5,B
|
||||
15,30,69,190,Male,Moderate,0,0,4,7,ESTP,20,1,22,4,13,11,7,15,A
|
||||
16,62,71,165,Male,Low,0,1,0,0,ISTJ,2,19,14,12,22,2,19,3,D
|
||||
17,59,66,138,Female,Low,6,3,6,6,ESTJ,12,9,18,8,14,10,20,2,A
|
||||
18,33,72,171,Male,Moderate,4,9,8,0,ENFP,17,4,10,16,11,13,4,18,B
|
||||
19,23,65,110,Female,Low,4.5,8.5,0,0,ESFP,13,8,15,11,12,12,9,13,B
|
||||
20,48,63,154,Female,Low,8,8,6,9,ISFP,9,13,16,10,11,13,9,13,C
|
||||
21,63,66,185,Female,Low,8,0,3,7,INFP,2,19,10,16,10,14,11,11,D
|
||||
22,64,69,176,Male,Low,0.5,0.5,0.5,0.5,ESTP,13,8,25,1,18,6,8,14,B
|
||||
23,71,68,156,Female,Low,2,8,0,6,ESTP,13,8,15,11,16,8,7,15,B
|
||||
24,71,61,140,Female,Low,8,3,3,8,ESFJ,12,9,23,3,5,19,16,6,D
|
||||
25,50,60,118,Female,Moderate,7,5,2,0,INFJ,2,19,11,15,1,23,12,10,C
|
||||
26,41,65,133,Female,Low,7,4,0,0,ISFJ,3,18,20,6,5,19,14,9,C
|
||||
27,36,68,165,Male,High,0,2,0,0,ESTP,16,5,20,6,15,9,7,15,A
|
||||
28,40,62,113,Female,Low,2,3,0,0,ISTP,7,14,15,11,14,10,6,16,D
|
||||
29,26,65,150,Male,Low,1,0,1,2,ENTJ,15,6,12,14,13,11,19,3,D
|
||||
30,43,63,175,Male,Moderate,0,0,0,5,ENFP,21,0,5,21,1,23,0,22,A
|
||||
31,46,66,222,Male,Low,0,0,0,8,ESFP,18,3,14,12,12,12,2,20,A
|
||||
32,47,69,152,Male,Low,0,0,3.5,5.5,ESTJ,12,9,19,7,14,10,17,5,D
|
||||
33,20,67,135,Male,Low,0,7,0,0,ESTP,15,6,14,12,14,10,3,19,B
|
||||
34,34,73,200,Male,Low,0,8,6,0,ENTJ,21,0,6,20,15,9,16,6,C
|
||||
35,54,62,190,Female,Low,0,5,4,0,ISFP,4,17,21,5,9,15,4,18,D
|
||||
36,66,63,142,Female,Low,2,0,0,0,ISTJ,4,17,16,10,17,7,18,4,C
|
||||
37,42,68,170,Male,High,0,10,0,0,ENFJ,17,4,10,16,8,16,15,7,C
|
||||
38,52,66,222,Male,Low,3,5,4,3,ENFP,17,4,5,21,1,23,2,20,A
|
||||
39,61,63,155,Male,Low,3.5,3.5,3.5,6,ESTP,18,3,23,3,15,9,6,16,B
|
||||
40,49,69,190,Male,Low,2,9,5,3,ENFJ,13,8,10,16,8,16,20,2,B
|
||||
41,17,69,145,Male,Moderate,0,7,2,0,INFP,9,12,8,18,6,18,11,11,C
|
||||
42,57,70,160,Male,Low,0,7,0,0,ISFP,6,14,17,9,12,12,11,11,D
|
||||
43,82,60,159,Male,Low,0,0,0,0,ESFP,21,0,20,6,6,18,2,20,A
|
||||
44,48,61,138,Female,Low,0,0,0,0,ENFP,21,0,10,16,4,20,1,21,A
|
||||
45,80,59,115,Female,Low,0,0,0,0,ENFP,19,2,11,15,6,18,3,19,A
|
||||
46,66,66,184,Male,Low,4,3,0,0,ISTJ,10,11,18,8,21,3,14,8,D
|
||||
47,63,62,150,Female,Low,2,10,0,4,ISFP,9,12,20,6,0,24,4,18,D
|
||||
48,13,62,127,Female,Low,3,2,2,5,ENFJ,21,0,7,17,2,21,13,9,B
|
||||
49,20,68,155,Male,Low,1,4,1,2,ESTP,16,5,17,9,15,9,10,12,B
|
||||
50,18,66,150,Female,Low,3,3,5,6,INFJ,7,12,13,13,8,16,18,4,B
|
||||
51,56,62,130,Female,Low,0,2,0,0,ESFP,18,3,21,4,5,19,10,12,C
|
||||
52,56,64,165,Male,Low,0,5,0,0,ENTP,16,5,12,14,16,8,4,17,B
|
||||
53,50,65,172,Female,Low,0,0,0,3,ESFP,14,7,19,7,1,23,5,17,A
|
||||
54,19,68,113,Female,Low,0,4,6,2,INFJ,7,14,18,8,12,12,14,8,D
|
||||
55,47,63,128,Female,Low,7.5,4,3,7.5,ESFJ,16,5,16,10,10,14,14,8,B
|
||||
56,62,61,150,Female,Low,2,2,2,2,ESTJ,17,4,20,6,8,16,16,6,B
|
||||
57,29,68,145,Female,Moderate,0,9,2,0,ESFP,19,2,16,10,4,20,6,16,B
|
||||
58,20,70,250,Male,Low,4,8,2,5,ESFP,17,4,14,12,7,17,4,18,B
|
||||
59,43,62,160,Female,Low,0,5,0,0,ISFJ,9,12,22,4,5,19,18,4,C
|
||||
60,43,64,183,Male,Low,0,3,4,0,ISTP,4,17,15,11,15,9,9,13,B
|
||||
61,42,63,166,Female,Low,0,0,0,8,ESFJ,21,0,20,6,3,21,16,6,B
|
||||
62,25,67,160,Male,Low,5,0,8,0,ESTP,16,5,19,7,19,5,7,15,A
|
||||
63,21,62,118,Female,Low,7.5,2.5,6.5,0,ESFP,11,10,19,7,10,14,5,17,B
|
||||
64,28,62,200,Male,Low,0,8,0,5,ENTP,18,3,11,15,20,4,9,13,C
|
||||
65,42,70,170,Male,Low,0,4,0,0,ESFP,18,3,17,9,5,19,6,16,A
|
||||
66,18,62,110,Female,Low,4,5,0,0,ISTJ,4,17,22,4,13,11,20,2,B
|
||||
67,24,73,155,Male,High,2,3,0,0,INTJ,5,16,9,17,14,10,17,5,C
|
||||
68,39,70,200,Male,Moderate,0,3,0,0,ENTP,18,3,5,21,18,6,7,15,B
|
||||
69,60,68,222,Male,Low,0.5,0.5,0.5,2.5,ISTP,7,14,19,7,15,9,3,19,C
|
||||
70,37,60,105,Female,Low,2,8,2,6,INFP,9,12,9,17,4,20,2,20,D
|
||||
71,30,67,135,Female,Low,5,5,0,1,ESFP,19,2,21,5,12,12,8,14,A
|
||||
72,45,67,148,Male,Low,2,3,0,5,ISFJ,5,16,18,8,12,12,17,5,C
|
||||
73,45,65,160,Female,Low,2,3,0,0,ENTJ,16,5,13,13,14,10,13,9,B
|
||||
74,53,73,170,Male,Low,0,0,0,0,ESFJ,16,5,14,12,12,12,17,5,C
|
||||
75,49,71,230,Male,Moderate,0,4,0,4,ESTJ,15,6,15,11,18,6,17,5,B
|
||||
76,45,67,160,Female,Low,2,0,2,0,ISFJ,3,18,17,9,12,12,18,4,A
|
||||
77,55,74,240,Male,Low,0,7,0,4,ESTP,16,5,14,12,17,7,11,11,C
|
||||
78,45,64,118,Female,Moderate,0,4,0,4,ISFP,5,16,18,8,11,13,6,16,D
|
||||
79,75,63,143,Female,Low,4,6,4,6,ESTJ,12,9,17,9,13,11,16,6,B
|
||||
80,44,66,200,Female,Low,2,3,2,0,ENFP,18,3,9,17,5,19,11,11,B
|
||||
81,48,71,145,Male,Low,0,7,4,0,INFP,3,18,11,15,6,18,4,18,C
|
||||
82,49,64,155,Female,Low,4,7,3,5,ESFP,12,9,16,10,4,19,9,13,C
|
||||
83,16,58,81,Female,Low,0,0,2,0,INFP,8,13,13,13,11,13,5,17,D
|
||||
84,39,60,88,Female,Low,3,1,0,0,ESFP,13,8,12,14,7,16,5,17,B
|
||||
85,19,68,125,Female,Low,0,3,0,0,ENTJ,18,3,9,17,6,18,12,10,D
|
||||
86,11,60,68,Male,High,5,3,1,0,ENFP,20,1,7,19,3,21,0,22,A
|
||||
87,55,65,198,Male,Low,4,2.5,3,8,ENTP,20,1,12,14,18,6,2,20,A
|
||||
88,28,67,180,Female,Low,0,0,0,0,ESFJ,11,10,22,14,8,16,14,8,B
|
||||
89,22,65,193,Female,Low,5,7,7,0,ESFJ,17,4,14,12,7,17,15,7,B
|
||||
90,56,67,150,Female,Low,0,7,0,0,ISFP,9,12,15,11,4,20,5,17,C
|
||||
91,29,65,125,Female,Moderate,2,0,0,4,ENFP,19,2,13,13,12,12,10,12,A
|
||||
92,16,69,130,Female,Moderate,5,0,5,7,ENFJ,19,2,9,17,2,22,12,10,B
|
||||
93,16,58,100,Male,Moderate,0,0,0,3,ESTP,19,2,22,4,19,5,2,20,B
|
||||
94,45,62,134,Female,Moderate,0,4,0,0,ESFJ,11,10,17,9,6,18,13,9,B
|
||||
95,43,69,188,Male,Moderate,2,0,0,0,ENFP,12,9,9,17,6,18,2,20,A
|
||||
96,28,67,180,Female,Low,0,0,0,0,ESFJ,11,10,22,14,8,16,14,8,B
|
||||
97,43,69,188,Male,Moderate,4,0,0,0,ENFP,12,9,9,17,6,18,2,20,A
|
|
Loading…
Reference in New Issue
Block a user