This commit is contained in:
a-shdv 2023-11-04 20:32:30 +04:00
parent c9fa1b2d60
commit 82829a15a2
4 changed files with 5162 additions and 2 deletions

View File

@ -1,7 +1,11 @@
# IIS_2023_1
### Задание
Использовать регрессию по вариантудля данных из таблицы 1 по варианту(таблица 10),самостоятельно сформулировав задачу. Оценить, насколько хорошо онаподходит для решения сформулированной вамизадачи.
4. Гребневая регрессия.
### Способ запуска лабораторной работы
Выполнить скрипт `shadaev_anton_lab_5/main.py`, после которого построится график.
### Стек технологий
* `Python`: v. 3.11
@ -10,5 +14,19 @@
* `Matplotlib` - это библиотека для визуализации данных в Python, предоставляющая инструменты для создания статических, анимированных и интерактивных графиков и диаграмм.
### Описание кода
1. Импортирование необходимых библиотек.
2. Выделение необходимых признаков.
3. Разделение данных на обучающие и тестовые.
4. Обучение и прогнозирование модели, применение алгоритма гребневой регрессии.
5. Вычисление метрик (среднеквадратичная ошибка и коэффициент детерминации).
6. Визуализация данных.
График:
![myplot.png](myplot.png)
### Вывод
* Среднеквадратичная ошибка = 0.179 (низкий), что говорит нам о том, что тестовые и предсказанные значения получились довольно точными.
* Коэффициент детерминации = 0.01, что означает, что только 1% дисперсии зависимой переменной может быть объяснено моделью. Это очень низкое значение, что указывает на то, что модель не очень хорошо объясняет данные.
Таким образом, гребневая регрессия не может быть применена к нашей задаче.

View File

@ -1 +1,32 @@
print('test')
import pandas as pd
from sklearn.linear_model import Ridge
from sklearn import metrics
from sklearn.preprocessing import MinMaxScaler
import matplotlib.pyplot as plt
# Загрузка данных и разделение на обучающий и тестовый наборы
data = pd.read_csv('stroke_prediction_ds.csv')
data = data.dropna()
scaler = MinMaxScaler()
x = data[['age', 'hypertension', 'heart_disease']] # выделение признаков (возраст, гипертензия, сердечные заболевания)
y = scaler.fit_transform(data['avg_glucose_level'].values.reshape(-1, 1)).flatten() # масштабирование данных
split_point = round(len(data) * 0.99) # 99% данных
x_train, x_test = x.iloc[:split_point], x.iloc[split_point:] # x_train читает 99% данных, а x_test - оставшийся 1%
y_train, y_test = y[:split_point], y[split_point:] # y_train читает 99% данных, а y_test - оставшийся 1%
# Обучение модели и прогнозирование, применение алгоритма гребневой регрессии
rid = Ridge(alpha=1.0).fit(x_train.values, y_train)
y_predict = rid.predict(x_test.values)
# Вычисление метрик и построение графика (среднеквадратичная ошибка и коэффициент детерминации)
mid_square = round(metrics.mean_squared_error(y_test, y_predict) ** 0.5, 3)
coeff_determ = round(metrics.r2_score(y_test, y_predict), 2)
# Визуализация данных
plt.plot(y_test, c="red", label="y_test")
plt.plot(y_predict, c="orange", label=f"y_pred\nmean_squared_error (mid_square) = {mid_square}\nCoefficient of determination (coeff_determ) = {coeff_determ}")
plt.legend(loc='upper right')
plt.title("Гребневая регрессия")
plt.show()

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

File diff suppressed because it is too large Load Diff