реади
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