gusev_vladislav_lab_6 is ready
This commit is contained in:
parent
d575910860
commit
db918284b5
47
gusev_vladislav_lab_6/README.md
Normal file
47
gusev_vladislav_lab_6/README.md
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
### Вариант 9
|
||||||
|
### Задание на лабораторную работу:
|
||||||
|
Использовать нейронную сеть MLPClassifier для данных из курсовой работы,
|
||||||
|
самостоятельно сформулировав задачу. Интерпретировать результаты и
|
||||||
|
оценить, насколько хорошо она подходит для решения сформулированной
|
||||||
|
вами задачи.
|
||||||
|
### Как запустить лабораторную работу:
|
||||||
|
Выполняем файл gusev_vladislav_lab_6.py, решение будет в консоли.
|
||||||
|
|
||||||
|
### Технологии
|
||||||
|
Sklearn - библиотека с большим количеством алгоритмов машинного обучения.
|
||||||
|
|
||||||
|
### Задача
|
||||||
|
Мною было принято решение посмотреть, как зависит цена алмазов от их
|
||||||
|
карат, глубины и размера верхней грани (table)
|
||||||
|
### По коду
|
||||||
|
1) Для начала загружаем данные из csv файла
|
||||||
|
2) Разделяем данные на обучающее и тестовые
|
||||||
|
3) Рескейлим данные
|
||||||
|
4) Задаем MLPClassifier и обучаем. Предсказываем данные и оцениваем производительность
|
||||||
|
5) Выводим в консоль
|
||||||
|
|
||||||
|
|
||||||
|
![img.png](img.png)
|
||||||
|
### По консоли
|
||||||
|
Accuracy: Это процент правильных предсказаний модели на тестовом наборе данных. Например, если значение
|
||||||
|
|
||||||
|
Classification Report (Отчет о классификации): Этот отчет предоставляет детализированную информацию о производительности модели для каждой категории (класса). Включает следующие метрики:
|
||||||
|
|
||||||
|
Precision (Точность): Доля объектов, которые правильно классифицированы как принадлежащие к данному классу относительно всех объектов, которые модель классифицировала как этот класс. Точность измеряет, насколько модель избегает ложных положительных результатов.
|
||||||
|
|
||||||
|
Recall (Полнота): Доля объектов, которые правильно классифицированы как принадлежащие к данному классу относительно всех объектов этого класса в исходных данных. Полнота измеряет способность модели обнаруживать объекты данного класса.
|
||||||
|
|
||||||
|
F1-Score: Гармоническое среднее точности и полноты. Эта метрика объединяет точность и полноту в одну метрику и помогает балансировать их.
|
||||||
|
|
||||||
|
Support (Поддержка): Количество объектов в данном классе.
|
||||||
|
|
||||||
|
High, low и medium, это высокие, низкие и средние значения столбца Price.
|
||||||
|
|
||||||
|
Accuracy (Точность): Это процент правильных классификаций моделью
|
||||||
|
|
||||||
|
Macro Avg (Макро среднее): Это среднее значение метрик для каждого класса, вычисленное независимо для каждого класса и затем усредненное. Это не учитывает разницу в размере классов и рассматривает все классы как равнозначные.
|
||||||
|
|
||||||
|
Weighted Avg (Взвешенное среднее): Это взвешенное среднее метрик, учитывая размер каждого класса. Это может быть полезным, когда классы имеют различные размеры (например, один класс больше другого).
|
||||||
|
### Вывод
|
||||||
|
- Точность вышла крайне высокой, из чего можно сделать вывод, что модель отлично подходит для
|
||||||
|
выбранной задачи
|
53944
gusev_vladislav_lab_6/diamonds_prices.csv
Normal file
53944
gusev_vladislav_lab_6/diamonds_prices.csv
Normal file
File diff suppressed because it is too large
Load Diff
44
gusev_vladislav_lab_6/gusev_vladislav_lab_6.py
Normal file
44
gusev_vladislav_lab_6/gusev_vladislav_lab_6.py
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
import pandas as pd
|
||||||
|
from sklearn.model_selection import train_test_split
|
||||||
|
from sklearn.neural_network import MLPClassifier
|
||||||
|
from sklearn.preprocessing import MinMaxScaler
|
||||||
|
from sklearn.metrics import accuracy_score, classification_report, confusion_matrix
|
||||||
|
|
||||||
|
|
||||||
|
# Загрузка данных из файла (замените 'diamonds.csv' на ваш путь к файлу)
|
||||||
|
data = pd.read_csv('diamonds_prices.csv')
|
||||||
|
|
||||||
|
# Выделение признаков (price, depth и carat)
|
||||||
|
X = data[['carat', 'depth', 'table']]
|
||||||
|
|
||||||
|
# Целевая переменная - table
|
||||||
|
y = data['price']
|
||||||
|
|
||||||
|
# Определение категорий (классов) для table, например, на основе диапазонов
|
||||||
|
# Вам нужно заменить этот блок на свои категории
|
||||||
|
# Пример: создание категорий на основе квантилей
|
||||||
|
y_categories = pd.qcut(y, q=3, labels=['Low', 'Medium', 'High'])
|
||||||
|
|
||||||
|
# Разделение данных на обучающий и тестовый наборы
|
||||||
|
X_train, X_test, y_train, y_test = train_test_split(X, y_categories, test_size=0.2, random_state=42)
|
||||||
|
|
||||||
|
# Нормализация данных
|
||||||
|
scaler = MinMaxScaler()
|
||||||
|
X_train = scaler.fit_transform(X_train)
|
||||||
|
X_test = scaler.transform(X_test)
|
||||||
|
|
||||||
|
# Создание и обучение MLPClassifier
|
||||||
|
mlp_classifier = MLPClassifier(hidden_layer_sizes=(100, 50), max_iter=1000, random_state=42)
|
||||||
|
mlp_classifier.fit(X_train, y_train)
|
||||||
|
|
||||||
|
# Предсказание на тестовых данных
|
||||||
|
y_pred = mlp_classifier.predict(X_test)
|
||||||
|
|
||||||
|
# Оценка производительности модели
|
||||||
|
accuracy = accuracy_score(y_test, y_pred)
|
||||||
|
class_report = classification_report(y_test, y_pred)
|
||||||
|
|
||||||
|
# Вывод результатов
|
||||||
|
print(f'Accuracy: {accuracy}')
|
||||||
|
print('Classification Report:')
|
||||||
|
print(class_report)
|
BIN
gusev_vladislav_lab_6/img.png
Normal file
BIN
gusev_vladislav_lab_6/img.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 15 KiB |
Loading…
Reference in New Issue
Block a user