реади

This commit is contained in:
DmitriyAntonov 2023-10-08 14:21:51 +04:00
parent 9644582307
commit d4e65b3373
4 changed files with 4514 additions and 0 deletions

View 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>

File diff suppressed because it is too large Load Diff

View 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()

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB