реади
This commit is contained in:
parent
9644582307
commit
b6ab40cae3
89
antonov_dmitry_lab_6/README.md
Normal file
89
antonov_dmitry_lab_6/README.md
Normal file
@ -0,0 +1,89 @@
|
||||
# Лаб 6 Регрессия
|
||||
|
||||
Использовать регрессию по варианту для данных из датасета курсовой
|
||||
Predict students' dropout and academic success (отсев студентов),
|
||||
самостоятельно сформулировав задачу. Оценить, насколько хорошо она подходит
|
||||
для решения сформулированной вами задачи.
|
||||
|
||||
# Вариант 3
|
||||
|
||||
Лассо-регрессия
|
||||
|
||||
# Запуск
|
||||
|
||||
Выполнением скрипта файла (вывод в консоль).
|
||||
|
||||
# Задача регрессии
|
||||
Для прогнозирования отсева учащихся и набора данных об успеваемости спрогнозируйте отсев
|
||||
используя нейроонную сеть для признаков
|
||||
'Curricular units 2nd sem (approved)' - (Учебные блоки 2-го семестра (утверждены))
|
||||
'Curricular units 2nd sem (grade)' - (Учебные блоки 2-го семестра (класс))
|
||||
'Tuition fees up to date' - (Стоимость обучения")
|
||||
|
||||
# Описание модели:
|
||||
"MLPClassifier" - это тип искусственной нейронной сети прямого действия, которая широко используется для задач классификации.
|
||||
Объяснение некоторых ключевых параметров:
|
||||
|
||||
1. hidden_layer_sizes:
|
||||
- Этот параметр определяет количество нейронов в каждом скрытом слое и количество скрытых слоев в сети.
|
||||
- Это кортеж, где каждый элемент представляет количество нейронов в определенном скрытом слое.
|
||||
- Например, `hidden_layer_sizes=(100, 100)` означает, что есть два скрытых слоя, причем первый слой
|
||||
- содержит 100 нейронов, а второй слой также содержит 100 нейронов.
|
||||
|
||||
2. activation:
|
||||
- Этот параметр определяет функцию активации для скрытых слоев. Функция активации привносит
|
||||
нелинейность в сеть, позволяя ей изучать сложные паттерны.
|
||||
- Распространенные варианты включают:
|
||||
- "identity": линейная функция активации (обычно не используется на практике).
|
||||
- "logistic": сигмовидная логистическая функция
|
||||
- "tanh": гиперболическая касательная функция
|
||||
- "relu": Выпрямленная линейная единица измерения
|
||||
|
||||
3. solver:
|
||||
- Этот параметр определяет алгоритм, используемый для оптимизации весов нейронной сети.
|
||||
- Распространенные варианты включают:
|
||||
- `adam": оптимизатор на основе стохастического градиента, сочетающий идеи RMSProp и Momentum.
|
||||
- `sgd": Стохастический градиентный спуск.
|
||||
- `lbfgs": алгоритм Бройдена-Флетчера-Гольдфарба-Шанно с ограниченной памятью.
|
||||
|
||||
4. alpha:
|
||||
- Параметр штрафа L2 (условие регуляризации). Это помогает предотвратить переобучение,
|
||||
наказывая за большие веса.
|
||||
- Более высокие значения "альфа" приводят к более сильной регуляризации.
|
||||
|
||||
5. max_iter:
|
||||
- Максимальное количество итераций для тренировочного процесса. Этот параметр помогает
|
||||
предотвратить бесконечное обучение модели.
|
||||
|
||||
6. learning_rate:
|
||||
- График скорости обучения для обновления веса. Он определяет размер шага, с которым веса
|
||||
обновляются во время тренировки.
|
||||
- Опции включают 'constant', 'invscaling', и 'adaptive'.
|
||||
|
||||
7. random_state:
|
||||
- Начальное значение, используемое генератором случайных чисел. Установка начального значения
|
||||
гарантирует воспроизводимость результатов.
|
||||
|
||||
8. batch_size:
|
||||
- Количество образцов, использованных в каждой мини-партии во время обучения. Это влияет
|
||||
на скорость конвергенции и использование памяти.
|
||||
|
||||
9. early_stopping:
|
||||
- Если установлено значение "True", обучение прекратится, если оценка проверки не улучшится.
|
||||
Это помогает предотвратить переобучение.
|
||||
|
||||
10. validation_fraction:
|
||||
- Доля обучающих данных, которую следует отложить в качестве валидационного набора для ранней
|
||||
остановки.
|
||||
|
||||
# Результат:
|
||||
Из прошлой лабораторной точность регрессии для вышеперечисленных признаков составила 0.6256 (alpha = 0.01)
|
||||
Точность нейронной сети для вышеперечисленных признаков составила 72.32%
|
||||
(при изменении описанных выше параметров оценка не улучается)
|
||||
На примере тех же самых признаков нейронная сеть обеспечивает
|
||||
лучшее качество предсказания отсева студентов.
|
||||
|
||||
<p>
|
||||
<div>Результат</div>
|
||||
<img src="screens/img.png" width="650" title="Результат">
|
||||
</p>
|
4425
antonov_dmitry_lab_6/dataset.csv
Normal file
4425
antonov_dmitry_lab_6/dataset.csv
Normal file
File diff suppressed because it is too large
Load Diff
51
antonov_dmitry_lab_6/lab6.py
Normal file
51
antonov_dmitry_lab_6/lab6.py
Normal file
@ -0,0 +1,51 @@
|
||||
import numpy as np
|
||||
import pandas as pd
|
||||
from sklearn.model_selection import train_test_split
|
||||
from sklearn.neural_network import MLPClassifier
|
||||
from sklearn.preprocessing import StandardScaler
|
||||
|
||||
# загрузка датасета
|
||||
data = pd.read_csv('dataset.csv')
|
||||
|
||||
# выбор признаков
|
||||
features = [
|
||||
'Curricular units 2nd sem (approved)',
|
||||
'Curricular units 2nd sem (grade)',
|
||||
'Tuition fees up to date',
|
||||
]
|
||||
target = 'Target'
|
||||
|
||||
X = data[features]
|
||||
y = data[target]
|
||||
|
||||
# разбиваем на тестовую и тренировочную выборки
|
||||
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
|
||||
|
||||
# стандартизация признаков
|
||||
scaler = StandardScaler()
|
||||
X_train = scaler.fit_transform(X_train)
|
||||
X_test = scaler.transform(X_test)
|
||||
|
||||
# тренируем нейронную сеть MLPClassifier
|
||||
classifier = MLPClassifier(
|
||||
hidden_layer_sizes=(50, 50), # два скрытых слоя с 50 нейронами каждый
|
||||
activation='relu', # relu функция активации
|
||||
solver='adam', # оптимизатор на основе стохастического градиента
|
||||
alpha=0.0001, # L2 штраф (регуляризация)
|
||||
max_iter=1000, # макс итераций
|
||||
learning_rate='constant', # постоянная скорость обучения
|
||||
random_state=42, # Random начало для воспроизведения результата
|
||||
batch_size=32, # размер мини партии
|
||||
early_stopping=True, # для предотвращения переобучения
|
||||
validation_fraction=0.2, # 20% данных для проверки
|
||||
verbose=True, # для оттображения итераций
|
||||
)
|
||||
classifier.fit(X_train, y_train)
|
||||
|
||||
# предсказываем значение
|
||||
y_pred = classifier.predict(X_test)
|
||||
|
||||
# оцениваем результат
|
||||
accuracy = np.mean(y_pred == y_test)
|
||||
|
||||
print(f'Оценка точности: {accuracy*100:.2f}%')
|
BIN
antonov_dmitry_lab_6/screens/img.png
Normal file
BIN
antonov_dmitry_lab_6/screens/img.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 44 KiB |
Loading…
Reference in New Issue
Block a user