kutygin_andrey_lab_6_ready #154
38
kutygin_andrey_lab_6/README.md
Normal file
38
kutygin_andrey_lab_6/README.md
Normal 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, тем более точная модель. Однако, точность нашей модели довольна низкая, так как предсказание формы НЛО может быть трудной задачей, основываясь только на доступных атрибутах.
|
||||||
|
|
40
kutygin_andrey_lab_6/main.py
Normal file
40
kutygin_andrey_lab_6/main.py
Normal 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)
|
1
kutygin_andrey_lab_6/ufo_sighting_data.csv
Normal file
1
kutygin_andrey_lab_6/ufo_sighting_data.csv
Normal file
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue
Block a user