41 lines
1.9 KiB
Python
41 lines
1.9 KiB
Python
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)
|