Merge pull request 'kutygin_andrey_lab_6_ready' (#154) from kutygin_andrey_lab_6 into main
Reviewed-on: http://student.git.athene.tech/Alexey/IIS_2023_1/pulls/154
This commit is contained in:
commit
4b1e0fafbd
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