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)