kutygin_andrey_lab_6_ready #154

Merged
Alexey merged 1 commits from kutygin_andrey_lab_6 into main 2023-12-07 15:56:19 +04:00
3 changed files with 79 additions and 0 deletions

View File

@ -0,0 +1,38 @@
**Задание**
***
Использовать нейронную сеть MLPClassifier для данных из таблицы 1 по
варианту, самостоятельно сформулировав задачу. Интерпретировать результаты и оценить, насколько хорошо она подходит для решения сформулированной вами задачи
**Как запустить лабораторную**
***
Запустить файл main.py
**Используемые технологии**
***
Библиотеки pandas, scikit-learn, их компоненты
**Описание лабораторной (программы)**
***
В представленном коде мы используем MLPClassifier (многослойный персептрон) для предсказания формы НЛО на основе доступных атрибутов.
1. Загружаем данные из файла CSV с помощью библиотеки pandas.
2. Проверяем наличие пропущенных значений в данных с помощью метода isna().sum(), где isna() обнаруживает пропущенные значения, а sum() возвращает число пропущенных значений для каждого столбца.
3. Заменяем пропущенные значения в категориальных столбцах (state/province, country, UFO_shape) на наиболее часто встречающиеся значения, используя метод mode()[0].
4. Удаляем строки с пропущенными значениями в числовом столбце UFO_shape с помощью метода dropna(subset=['UFO_shape']).
5. Преобразуем текстовый атрибут UFO_shape в числовые значения, используя LabelEncoder.
6. Разделяем данные на атрибуты (X) и целевую переменную (y).
7. Разделяем данные на обучающую и тестовую выборки с помощью метода train_test_split().
8. Создаем объект модели MLPClassifier с указанием размерности скрытого слоя (hidden_layer_sizes=(100,)) и количества итераций (max_iter=1000).
9. Обучаем модель на обучающей выборке с помощью метода fit().
10. Получаем предсказания на тестовой выборке с помощью метода predict().
11. Оцениваем точность модели с помощью метрики accuracy_score, сравнивая предсказанные значения с истинными.
12. Выводим точность модели.
**Результат**
***
Мы можем сделать выводы о точности модели на основе значения accuracy.
Accuracy: 0.125
Чем ближе значение к 1, тем более точная модель. Однако, точность нашей модели довольна низкая, так как предсказание формы НЛО может быть трудной задачей, основываясь только на доступных атрибутах.

View File

@ -0,0 +1,40 @@
import pandas as pd
from sklearn.neural_network import MLPClassifier
from sklearn.preprocessing import LabelEncoder
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# Загрузим данные из файла (пример)
data = pd.read_csv("ufo_sighting_data.csv")
# Проверим наличие пропущенных значений
print(data.isna().sum())
# Заменим пропущенные значения в категориальных столбцах на наиболее часто встречающиеся значения
data['state/province'].fillna(data['state/province'].mode()[0], inplace=True)
data['country'].fillna(data['country'].mode()[0], inplace=True)
data['UFO_shape'].fillna(data['UFO_shape'].mode()[0], inplace=True)
# Избавимся от пропущенных значений в числовых столбцах
data = data.dropna(subset=['UFO_shape'])
# Преобразуем текстовые атрибуты в числовые значения
label_encoder = LabelEncoder()
data['UFO_shape'] = label_encoder.fit_transform(data['UFO_shape'])
# Выделим атрибуты и целевую переменную
X = data[['UFO_shape', 'length_of_encounter_seconds', 'latitude', 'longitude']]
y = data['UFO_shape']
# Разделим данные на обучающую и тестовую выборки
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Создадим и обучим модель
model = MLPClassifier(hidden_layer_sizes=(100,), max_iter=1000, random_state=42)
model.fit(X_train, y_train)
# Получим предсказания на тестовой выборке
y_pred = model.predict(X_test)
# Оценим точность модели
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)

File diff suppressed because one or more lines are too long