Merge pull request 'gusev_vladislav_lab_5 is ready' (#90) from gusev_vladislav_lab_5 into main
Reviewed-on: http://student.git.athene.tech/Alexey/IIS_2023_1/pulls/90
This commit is contained in:
commit
71cad406c2
24
gusev_vladislav_lab_5/README.md
Normal file
24
gusev_vladislav_lab_5/README.md
Normal file
@ -0,0 +1,24 @@
|
||||
### Вариант 9
|
||||
### Задание на лабораторную работу:
|
||||
Использовать регрессию по варианту для данных из курсовой работы. Самостоятельно сформулировав задачу. Интерпретировать результаты и оценить, насколько хорошо он подходит для решения сформулированной задачи.
|
||||
### Как запустить лабораторную работу:
|
||||
Выполняем файл gusev_vladislav_lab_5.py, будет выведен график на экран.
|
||||
|
||||
### Технологии
|
||||
NumPy - библиотека для работы с многомерными массивами. Mathplotlib - библиотека для визуализации данных двумерной и трехмерной графикой. Sklearn - библиотека с большим количеством алгоритмов машинного обучения.
|
||||
|
||||
### Задача
|
||||
Мною было принято решение посмотреть, как зависит
|
||||
### По коду
|
||||
1) Для начала загружаем данные из csv файла
|
||||
2) Разделяем данные на обучающее и тестовые
|
||||
3) Рескейлим данные из столбца price, который был в диапозоне от 370 до 2700 к диапозону от 0 до 1
|
||||
4) Обучаем модель, находим R^2 (среднеквадратическая ошибка) и коэффициент детерминации
|
||||
5) Выводим графики
|
||||
|
||||
|
||||
![img.png](img.png)
|
||||
|
||||
### Вывод
|
||||
- Среднеквадарическая ошибка получилась довольно низкой, что говорит нам о точности тестовых и предсказанных значений, однако коэффициент детерминации получился крайне низким, даже отрицательным. Это значит, что модель не понимает зависимости данных.
|
||||
- Итог: гребневая модель регресси не применима к нашей задаче
|
53944
gusev_vladislav_lab_5/diamonds_prices.csv
Normal file
53944
gusev_vladislav_lab_5/diamonds_prices.csv
Normal file
File diff suppressed because it is too large
Load Diff
34
gusev_vladislav_lab_5/gusev_vladislav_lab_5.py
Normal file
34
gusev_vladislav_lab_5/gusev_vladislav_lab_5.py
Normal file
@ -0,0 +1,34 @@
|
||||
import pandas as pd
|
||||
|
||||
from sklearn.linear_model import Ridge
|
||||
from sklearn import metrics
|
||||
from sklearn.preprocessing import MinMaxScaler
|
||||
import matplotlib.pyplot as plt
|
||||
import numpy as np
|
||||
# загрузка данных из файла
|
||||
data = pd.read_csv('diamonds_prices.csv')
|
||||
scaler = MinMaxScaler()
|
||||
|
||||
x_train = data[['price', 'carat', 'depth']].iloc[0:round(len(data) / 100 * 99)]
|
||||
y_train = data['table'].iloc[0:round(len(data) / 100 * 99)]
|
||||
y_train = scaler.fit_transform(y_train.values.reshape(-1, 1)) # приводим к виду от 0 до 1
|
||||
y_train = y_train.flatten()
|
||||
x_test = data[['price', 'carat', 'depth']].iloc[round(len(data) / 100 * 99):len(data)]
|
||||
y_test = data['table'].iloc[round(len(data) / 100 * 99):len(data)]
|
||||
y_test = scaler.fit_transform(y_test.values.reshape(-1, 1)) # приводим к виду от 0 до 1
|
||||
y_test = y_test.flatten()
|
||||
|
||||
rid = Ridge(alpha=1.0)
|
||||
rid.fit(x_train.values, y_train)
|
||||
y_predict = rid.predict(x_test.values)
|
||||
|
||||
mid_square = np.round(np.sqrt(metrics.mean_squared_error(y_test, y_predict)),3) # рассчёт Ср^2
|
||||
coeff_determ = np.round(metrics.r2_score(y_test, y_predict), 2) # рассчёт коэффициента детерминации
|
||||
|
||||
plt.plot(y_test, c="red", label="y тестовые ")
|
||||
plt.plot(y_predict, c="green", label="y предсказанные \n"
|
||||
"Ср^2 = " + str(mid_square) + "\n"
|
||||
"Coeff_determ = " + str(coeff_determ))
|
||||
plt.legend(loc='upper right')
|
||||
plt.title("Гребневая регрессия")
|
||||
plt.show()
|
BIN
gusev_vladislav_lab_5/img.png
Normal file
BIN
gusev_vladislav_lab_5/img.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 75 KiB |
Loading…
Reference in New Issue
Block a user