Merge pull request 'madyshev_egor_lab_3 is ready' (#57) from madyshev_egor_lab_3 into main
Reviewed-on: http://student.git.athene.tech/Alexey/IIS_2023_1/pulls/57
This commit is contained in:
commit
f8075403a3
1001
madyshev_egor_lab_3/StudentsPerformance.csv
Normal file
1001
madyshev_egor_lab_3/StudentsPerformance.csv
Normal file
File diff suppressed because it is too large
Load Diff
46
madyshev_egor_lab_3/main.py
Normal file
46
madyshev_egor_lab_3/main.py
Normal file
@ -0,0 +1,46 @@
|
||||
import numpy as np
|
||||
import pandas as pb
|
||||
import matplotlib.pyplot as plt
|
||||
from sklearn.model_selection import train_test_split
|
||||
from sklearn.linear_model import LinearRegression, Perceptron
|
||||
from sklearn.neural_network import MLPClassifier, MLPRegressor
|
||||
from sklearn.preprocessing import LabelEncoder, OneHotEncoder, MinMaxScaler
|
||||
from sklearn.tree import DecisionTreeRegressor, DecisionTreeClassifier
|
||||
|
||||
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", "test preparation course", "math score", "reading score", "writing score"]]
|
||||
y = df["parental level of education"]
|
||||
X_train, X_Test, y_train, y_test = train_test_split(X, y, test_size=0.01, random_state=42)
|
||||
dtc = DecisionTreeClassifier()
|
||||
dtc = dtc.fit(X_train, y_train)
|
||||
dtr = DecisionTreeRegressor()
|
||||
dtr = dtr.fit(X_train, y_train)
|
||||
print()
|
||||
print("Результат дерева класификации на учебных данных: ", dtc.score(X_train, y_train))
|
||||
print("Результат дерева класификации на тестовых данных: ", dtc.score(X_Test, y_test))
|
||||
print()
|
||||
print("Результат дерева регрессии на учебных данных: ", dtr.score(X_train, y_train))
|
||||
print("Результат дерева регрессии на тестовых данных: ", dtr.score(X_Test, y_test))
|
41
madyshev_egor_lab_3/readme.md
Normal file
41
madyshev_egor_lab_3/readme.md
Normal file
@ -0,0 +1,41 @@
|
||||
# Задание
|
||||
Решите с помощью библиотечной реализации дерева решений задачу из лабораторной работы «Веб-сервис «Дерево решений» по предмету «Методы искусственного интеллекта» на 99% ваших данных. Проверьте работу модели на оставшемся проценте, сделайте вывод
|
||||
## Задание по варианту
|
||||
Задача для дерева решений. Предсказание уровня образования родителей по всем остальных данным.
|
||||
## Решение
|
||||
### Запуск программы
|
||||
Для запуска программы необходимо запустить файл 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
|
||||
|
||||
Результат дерева классификации на учебных данных: 0.998989898989899
|
||||
Результат дерева классификации на тестовых данных: 0.2
|
||||
|
||||
Результат дерева регрессии на учебных данных: 0.9984005221729634
|
||||
Результат дерева регрессии на тестовых данных: -1.2264150943396226
|
||||
|
||||
По результатам двух типов моделей деревьев видно, что модель дерева решений не подходит для предсказания уровня образования родителей по этим данным. Или на практике не существует такой зависимости.
|
||||
С целью проверки не переобучилась ли модель были проведены тесты с изменением параметров программы.
|
||||
Изменение объема обучающей выборки и регулирование параметров моделей деревьев результат не поменяло.
|
||||
Это значит, что модель не была переобучена.
|
Loading…
Reference in New Issue
Block a user