Merge pull request 'shadaev_anton_lab_5' (#135) from shadaev_anton_lab_5 into main
Reviewed-on: http://student.git.athene.tech/Alexey/IIS_2023_1/pulls/135
This commit is contained in:
commit
70c0f7a0e1
32
shadaev_anton_lab_5/README.md
Normal file
32
shadaev_anton_lab_5/README.md
Normal file
@ -0,0 +1,32 @@
|
||||
# IIS_2023_1
|
||||
### Задание
|
||||
Использовать регрессию по вариантудля данных из таблицы 1 по варианту(таблица 10),самостоятельно сформулировав задачу. Оценить, насколько хорошо онаподходит для решения сформулированной вамизадачи.
|
||||
|
||||
4. Гребневая регрессия.
|
||||
|
||||
### Способ запуска лабораторной работы
|
||||
Выполнить скрипт `shadaev_anton_lab_5/main.py`, после которого построится график.
|
||||
|
||||
### Стек технологий
|
||||
* `Python`: v. 3.11
|
||||
* `Pandas` - библиотека, которая позволяет работать с двумерными и многомерными таблицами, строить сводные таблицы, выделять колонки, использовать фильтры по параметрам, выполнять группировку по параметрам, запускать функции (сложение, нахождение медианы, среднего, минимального, максимального значений), объединять таблицы и многое другое
|
||||
* `Sklearn` - предоставляет ряд инструментов для моделирования данных, включая классификацию, регрессию, кластеризацию и уменьшение размерности.
|
||||
* `Matplotlib` - это библиотека для визуализации данных в Python, предоставляющая инструменты для создания статических, анимированных и интерактивных графиков и диаграмм.
|
||||
|
||||
### Описание кода
|
||||
1. Импортирование необходимых библиотек.
|
||||
2. Выделение необходимых признаков.
|
||||
3. Разделение данных на обучающие и тестовые.
|
||||
4. Обучение и прогнозирование модели, применение алгоритма гребневой регрессии.
|
||||
5. Вычисление метрик (среднеквадратичная ошибка и коэффициент детерминации).
|
||||
6. Визуализация данных.
|
||||
|
||||
График:
|
||||
|
||||
![myplot.png](myplot.png)
|
||||
|
||||
### Вывод
|
||||
* Среднеквадратичная ошибка = 0.179 (низкий), что говорит нам о том, что тестовые и предсказанные значения получились довольно точными.
|
||||
* Коэффициент детерминации = 0.01, что означает, что только 1% дисперсии зависимой переменной может быть объяснено моделью. Это очень низкое значение, что указывает на то, что модель не очень хорошо объясняет данные.
|
||||
|
||||
Таким образом, гребневая регрессия не может быть применена к нашей задаче.
|
32
shadaev_anton_lab_5/main.py
Normal file
32
shadaev_anton_lab_5/main.py
Normal file
@ -0,0 +1,32 @@
|
||||
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()
|
BIN
shadaev_anton_lab_5/myplot.png
Normal file
BIN
shadaev_anton_lab_5/myplot.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 50 KiB |
5111
shadaev_anton_lab_5/stroke_prediction_ds.csv
Normal file
5111
shadaev_anton_lab_5/stroke_prediction_ds.csv
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user