madyshev_egor_lab_6 is ready

This commit is contained in:
ktrepfk 2023-11-02 19:08:29 +04:00
parent b26c54a7e4
commit 4eb8cfabd1
3 changed files with 1088 additions and 0 deletions

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,49 @@
import numpy as np
import pandas as pb
import matplotlib.pyplot as plt
from sklearn.metrics import accuracy_score
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression, Perceptron, LogisticRegression, Lasso, Ridge
from sklearn.neural_network import MLPClassifier, MLPRegressor
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import LabelEncoder, OneHotEncoder, MinMaxScaler
from sklearn.tree import DecisionTreeRegressor, DecisionTreeClassifier
from sklearn.preprocessing import PolynomialFeatures
df = pb.read_csv("StudentsPerformance.csv", sep=",", encoding="windows-1251")
df1 = df
print("Данные без подготовки:")
with pb.option_context('display.max_rows', None, 'display.max_columns', None, 'display.width', 1000):
print(df[:5])
def prepareStringData(columnName):
uniq = df[columnName].unique()
mp = {}
for i in uniq:
mp[i] = len(mp)
df[columnName] = df[columnName].map(mp)
print()
print("Данные после подготовки:")
prepareStringData("gender")
prepareStringData("race/ethnicity")
prepareStringData("parental level of education")
prepareStringData("lunch")
prepareStringData("test preparation course")
with pb.option_context('display.max_rows', None, 'display.max_columns', None, 'display.width', 1000):
print(df[:5])
X = df[["gender", "race/ethnicity", "lunch", "parental level of education", "reading score", "writing score", "math score"]]
y = df["test preparation course"]
X_train, X_Test, y_train, y_test = train_test_split(X, y, test_size=0.26, random_state=42)
mlpr = MLPRegressor()
mlpc = MLPClassifier()
mlpr.fit(X_train, y_train)
mlpc.fit(X_train, y_train)
print("MLPRegressor:", mlpr.score(X_Test, y_test))
print("MLPClassifier:", mlpc.score(X_Test, y_test))

View File

@ -0,0 +1,38 @@
# Задание
Использовать нейронную сеть (четные варианты MLPRegressor, нечетные MLPClassifier) для данных из таблицы 1 по варианту, самостоятельно сформулировав задачу. Интерпретировать результаты и оценить, насколько хорошо она подходит для решения сформулированной вами задачи.
## Задание по варианту
MLPRegressor
## Решение
### Запуск программы
Для запуска программы необходимо запустить файл main.py, содержащий код программы
### Используемые технологии
Программа использует следующие библиотеки:
- numpy - библиотека для работы с массивами и матрицами.
- matplotlib - библиотека для создания графиков и визуализации данных.
- sklearn - библиотека для машинного обучения и анализа данных.
### Что делает программа
Программа читает данные из csv файла. Подготавливает их для работы модели, приводя текстовые параметры к числам. И пытается научиться предсказывать прохождение подготовительных курсов с помощью моделей нейронных сетей.
### Тесты
Данные без подготовки:
gender race/ethnicity parental level of education lunch test preparation course math score reading score writing score
0 female group B bachelor's degree standard none 72 72 74
1 female group C some college standard completed 69 90 88
2 female group B master's degree standard none 90 95 93
3 male group A associate's degree free/reduced none 47 57 44
4 male group C some college standard none 76 78 75
Данные после подготовки:
gender race/ethnicity parental level of education lunch test preparation course math score reading score writing score
0 0 0 0 0 0 72 72 74
1 0 1 1 0 1 69 90 88
2 0 0 2 0 0 90 95 93
3 1 2 3 1 0 47 57 44
4 1 1 1 0 0 76 78 75
MLPRegressor: 0.1347847602324338
MLPClassifier: 0.65
Модель регрессии показала себя хуже чем модель классификации. Хотя модель классификации показала себя чуть лучше, результаты её работы всё равно не очень высоки.
Итоговый результат лежит в границах между 0 и 1, и в тестовых результатах является целым. Это значит, что угадывая произвольно модель в любом случае может достигнуть точности близкой к 0.5
Вывод: Модели нейронных сетей MLPRegressor и MLPClassifier не подходят для решения поставленной задачи, предсказания прохождения курсов по остальным данным. Или на практике не существует соответствующей зависимости в данных.