Merge pull request 'gusev_vladislav_lab_3' (#62) from gusev_vladislav_lab_3 into main

Reviewed-on: http://student.git.athene.tech/Alexey/IIS_2023_1/pulls/62
This commit is contained in:
Alexey 2023-10-24 16:48:23 +04:00
commit d575910860
4 changed files with 54002 additions and 0 deletions

View File

@ -0,0 +1,27 @@
### Вариант 9
### Задание на лабораторную работу:
Решите с помощью библиотечной реализации дерева решений задачу: Запрограммировать дерево решений как минимум на 99% ваших данных для задачи: Зависимость глубины алмаза (depth) от длины (x), ширины (y) и высоты алмаза (z) . Проверить работу модели на оставшемся проценте, сделать вывод.
### Как запустить лабораторную работу:
Выполняем файл gusev_vladislav_lab_3.py, решение будет в консоли.
### Технологии
Sklearn - библиотека с большим количеством алгоритмов машинного обучения. Нам понадобится библиотека для дерева решения регрессии sklearn.tree.DecisionTreeRegressor.
### По коду
1) Для начала загружаем данные из csv файла
2) Разделеям данные на признаки (X) и целевую переменную (y)
3) Разделяем данные на обучающее и тестовые
4) Обучаем дерево регрессией (model)
5) Выводим важность признаков, предсказание значений на тестовой выборке и оценку производительности модели
Пример:
![img.png](img.png)
### Вывод
- score: ~0.88. Это мера того, насколько хорошо модель соответствует данным. По значению 88% можно сказать, что модель хорошо соответствует данным.
- feature_importances: ~0.26, ~0.34, ~0,39. Это говорит о важности признаков для нашей модели. Можно сказать, что высота (z) имеет наибольшую важность.
- Mean Squared Error: 0.22. Это ошибка модели. Это говорит о том, что модель в среднем ошибается в 22% случаев.
По итогу можно сказать, что модель отработала хорошо, из-за score ~0.88.

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,31 @@
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeRegressor
from sklearn.metrics import mean_squared_error
# Загрузка данных из csv-файла
data = pd.read_csv('diamonds_prices.csv', index_col='diamond_id')
# Разделение данных на признаки (X) и целевую переменную (y)
X = data[['x', 'y', 'z']]
print (X.head())
y = data['depth']
# Разделение данных на обучающую и тестовую выборки
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.01, random_state=42)
#Решение с помощью дерева регрессии
model = DecisionTreeRegressor()
model.fit(X_train, y_train)
test_score = model.score(X_test, y_test)
# Получение важности признаков
feature_importances = model.feature_importances_
# Предсказание значений на тестовой выборке
y_pred = model.predict(X_test)
# Оценка производительности модели
mse = mean_squared_error(y_test, y_pred)
print("score", test_score)
print("feature_importances", feature_importances)
print("Mean Squared Error: {:.2f}".format(mse))

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB