реади
This commit is contained in:
parent
9644582307
commit
d4e65b3373
43
antonov_dmitry_lab_5/README.md
Normal file
43
antonov_dmitry_lab_5/README.md
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
# Лаб 5 Регрессия
|
||||||
|
|
||||||
|
Использовать регрессию по варианту для данных из датасета курсовой
|
||||||
|
Predict students' dropout and academic success (отсев студентов),
|
||||||
|
самостоятельно сформулировав задачу. Оценить, насколько хорошо она подходит
|
||||||
|
для решения сформулированной вами задачи.
|
||||||
|
|
||||||
|
# Вариант 3
|
||||||
|
|
||||||
|
Лассо-регрессия
|
||||||
|
|
||||||
|
# Запуск
|
||||||
|
|
||||||
|
Выполнением скрипта файла (вывод в консоль).
|
||||||
|
|
||||||
|
# Описание модели:
|
||||||
|
|
||||||
|
Лассо (Lasso) — это метод регрессионного анализа, который используется в статистике и
|
||||||
|
машинном обучении для предсказания значения зависимой переменной.
|
||||||
|
|
||||||
|
Регрессия Лассо использует регуляризацию L1 для добавления штрафа, равного абсолютному
|
||||||
|
значению коэффициентов. Это уменьшает некоторые коэффициенты и устанавливает другие равными 0,
|
||||||
|
выполняя автоматический выбор функции. Обычная регрессия не имеет регуляризации.
|
||||||
|
|
||||||
|
# Задача регрессии
|
||||||
|
Для прогнозирования отсева учащихся и набора данных об успеваемости спрогнозируйте отсев
|
||||||
|
используя регрессию Лассо для признаков
|
||||||
|
'Curricular units 2nd sem (approved)' - (Учебные блоки 2-го семестра (утверждены))
|
||||||
|
'Curricular units 2nd sem (grade)' - (Учебные блоки 2-го семестра (класс))
|
||||||
|
'Tuition fees up to date' - (Стоимость обучения")
|
||||||
|
'Curricular units 2nd sem (grade)' - (Учебные блоки 2-го семестра (класс))
|
||||||
|
|
||||||
|
# Результаты
|
||||||
|
Точность регрессии для вышеперечисленных признаков составили 0.6256 (alpha = 0.01)
|
||||||
|
При изменении коэффициента регуляризации в диапозоне от 0.01 до 1.5 наблюдается только ухудшение качества
|
||||||
|
модели, таким образом для заданных параметров подходит больше обычная модель линейной регрессии, так как
|
||||||
|
по этим признакам судя по результатам наблюдается линейная зависимость.
|
||||||
|
Для этих признаков модель регрессии подходит плохо, нужно искать другую.
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<div>График</div>
|
||||||
|
<img src="screens/myplot.png" width="650" title="График">
|
||||||
|
</p>
|
4425
antonov_dmitry_lab_5/dataset.csv
Normal file
4425
antonov_dmitry_lab_5/dataset.csv
Normal file
File diff suppressed because it is too large
Load Diff
46
antonov_dmitry_lab_5/lab5.py
Normal file
46
antonov_dmitry_lab_5/lab5.py
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
import numpy as np
|
||||||
|
import pandas as pd
|
||||||
|
from matplotlib import pyplot as plt
|
||||||
|
from sklearn.linear_model import Lasso
|
||||||
|
from sklearn.metrics import accuracy_score
|
||||||
|
from sklearn.model_selection import train_test_split
|
||||||
|
|
||||||
|
# загрузка данных
|
||||||
|
data = pd.read_csv('dataset.csv')
|
||||||
|
X = (data[
|
||||||
|
['Curricular units 2nd sem (approved)', 'Curricular units 2nd sem (grade)',
|
||||||
|
'Tuition fees up to date',
|
||||||
|
'Curricular units 2nd sem (grade)']])
|
||||||
|
y = data['Target']
|
||||||
|
|
||||||
|
# тренировка модели
|
||||||
|
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
|
||||||
|
|
||||||
|
lasso_model = Lasso(alpha=0.01)
|
||||||
|
lasso_model.fit(X_train, y_train)
|
||||||
|
|
||||||
|
# оценка модели
|
||||||
|
y_pred_train = lasso_model.predict(X_train)
|
||||||
|
y_pred_test = lasso_model.predict(X_test)
|
||||||
|
|
||||||
|
# оценка результатов модели
|
||||||
|
train_accuracy = accuracy_score(y_train, np.round(y_pred_train))
|
||||||
|
test_accuracy = accuracy_score(y_test, np.round(y_pred_test))
|
||||||
|
|
||||||
|
# вывод результатов
|
||||||
|
print(f"Тренировочная Accuracy: {train_accuracy}")
|
||||||
|
print(f"Тест Accuracy: {test_accuracy}")
|
||||||
|
|
||||||
|
# коэффициенты значимости признаков
|
||||||
|
coefficients = lasso_model.coef_
|
||||||
|
feature_names = X.columns
|
||||||
|
|
||||||
|
# вывод в консоль коэффициентов значимости
|
||||||
|
for feature, coef in zip(feature_names, coefficients):
|
||||||
|
print(f"{feature}: {coef}")
|
||||||
|
|
||||||
|
plt.figure(figsize=(10, 6))
|
||||||
|
plt.barh(feature_names, coefficients)
|
||||||
|
plt.xlabel('коэффициент')
|
||||||
|
plt.title('Значимости признаков по регрессии Лассо')
|
||||||
|
plt.show()
|
BIN
antonov_dmitry_lab_5/screens/myplot.png
Normal file
BIN
antonov_dmitry_lab_5/screens/myplot.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 19 KiB |
Loading…
Reference in New Issue
Block a user