diff --git a/verina_daria_lab_5/README.md b/verina_daria_lab_5/README.md new file mode 100644 index 0000000..41722b5 --- /dev/null +++ b/verina_daria_lab_5/README.md @@ -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) с высокой точностью и полнотой, как указано в матрице ошибок и отчете о классификации. diff --git a/verina_daria_lab_5/img.png b/verina_daria_lab_5/img.png new file mode 100644 index 0000000..1d21b41 Binary files /dev/null and b/verina_daria_lab_5/img.png differ diff --git a/verina_daria_lab_5/main.py b/verina_daria_lab_5/main.py new file mode 100644 index 0000000..fe45f43 --- /dev/null +++ b/verina_daria_lab_5/main.py @@ -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() diff --git a/verina_daria_lab_5/person_types.csv b/verina_daria_lab_5/person_types.csv new file mode 100644 index 0000000..633e77f --- /dev/null +++ b/verina_daria_lab_5/person_types.csv @@ -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