Merge pull request 'madyshev_egor_lab_4 is ready' (#58) from madyshev_egor_lab_4 into main
Reviewed-on: http://student.git.athene.tech/Alexey/IIS_2023_1/pulls/58
This commit is contained in:
commit
4f349a1d49
1001
madyshev_egor_lab_4/StudentsPerformance.csv
Normal file
1001
madyshev_egor_lab_4/StudentsPerformance.csv
Normal file
File diff suppressed because it is too large
Load Diff
BIN
madyshev_egor_lab_4/lab4_1.png
Normal file
BIN
madyshev_egor_lab_4/lab4_1.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 32 KiB |
BIN
madyshev_egor_lab_4/lab4_2.png
Normal file
BIN
madyshev_egor_lab_4/lab4_2.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 38 KiB |
54
madyshev_egor_lab_4/main.py
Normal file
54
madyshev_egor_lab_4/main.py
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
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
|
||||||
|
from scipy.cluster.hierarchy import dendrogram, linkage
|
||||||
|
|
||||||
|
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[:15]
|
||||||
|
X = X[["math score", "reading score", "writing score"]].values
|
||||||
|
labelList = []
|
||||||
|
for i in X:
|
||||||
|
st = ""
|
||||||
|
for j in i:
|
||||||
|
st += str(j)
|
||||||
|
st += ","
|
||||||
|
st = "(" + st[:len(st) - 1] + ")"
|
||||||
|
labelList.append(st)
|
||||||
|
linked = linkage(X, 'single')
|
||||||
|
|
||||||
|
plt.figure(figsize=(10, 7))
|
||||||
|
dendrogram(linked,
|
||||||
|
orientation='top',
|
||||||
|
labels=labelList,
|
||||||
|
distance_sort='descending',
|
||||||
|
show_leaf_counts=True)
|
||||||
|
plt.show()
|
24
madyshev_egor_lab_4/readme.md
Normal file
24
madyshev_egor_lab_4/readme.md
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
# Задание
|
||||||
|
Использовать метод кластеризации по варианту для данных из таблицы 1 по варианту (таблица 9), самостоятельно сформулировав задачу. Интерпретировать результаты и оценить, насколько хорошо он подходит для решения сформулированной вами задачи.
|
||||||
|
## Задание по варианту
|
||||||
|
Задача для дерева решений. Предсказание уровня образования родителей по всем остальных данным.
|
||||||
|
## Решение
|
||||||
|
### Запуск программы
|
||||||
|
Алгоритм кластеризации: dendrogram
|
||||||
|
### Используемые технологии
|
||||||
|
Программа использует следующие библиотеки:
|
||||||
|
- numpy - библиотека для работы с массивами и матрицами.
|
||||||
|
- matplotlib - библиотека для создания графиков и визуализации данных.
|
||||||
|
- sklearn - библиотека для машинного обучения и анализа данных.
|
||||||
|
### Что делает программа
|
||||||
|
Программа читает данные из csv файла. Подготавливает их для работы модели, приводя текстовые параметры к числам. И кластеризует учеников по результатам их экзаменов.
|
||||||
|
### Тесты
|
||||||
|
![Кластеризация первых 15](lab4_1.png)
|
||||||
|
|
||||||
|
На примере первых пятнадцати учеников хорошо видна их кластеризация дендрограммой. Ученики легко бьются на группы по их успеваемости.
|
||||||
|
Благодаря этому можно выделить группы учеников в зависимости от их оценок. Достаточно выбрать необходимую ветвь.
|
||||||
|
|
||||||
|
![Кластеризация первых 45](lab4_2.png)
|
||||||
|
Хотя диаграмма на большее количество учеников и становиться более насыщенной. В ней всё равно достаточно просто выделить группы учеников по успеваемости.
|
||||||
|
|
||||||
|
Вывод: Кластеризация дендрограммой позволяет достаточно эффективно делить учащихся на группы по успеваемости, основываясь на оценках их экзаменов.
|
Loading…
Reference in New Issue
Block a user