40 lines
1.6 KiB
Python
40 lines
1.6 KiB
Python
|
import pandas as pd
|
||
|
from sklearn.tree import DecisionTreeClassifier
|
||
|
from sklearn.metrics import accuracy_score
|
||
|
from sklearn.model_selection import train_test_split
|
||
|
|
||
|
# Загрузка данных
|
||
|
data = pd.read_csv('ufo_sighting_data.csv')
|
||
|
|
||
|
# Выбор признаков
|
||
|
features = [ 'length_of_encounter_seconds', 'latitude', 'longitude']
|
||
|
target = 'UFO_shape'
|
||
|
# Удаление строк содержащих NaN
|
||
|
data.dropna(inplace=True)
|
||
|
|
||
|
# Удаление столбцов содержащих NaN
|
||
|
data.dropna(axis='columns', inplace=True)
|
||
|
|
||
|
# Разделение данных на обучающую и тестовую выборки
|
||
|
train_data, test_data, train_labels, test_labels = train_test_split(data[features], data[target], test_size=0.2, random_state=42)
|
||
|
|
||
|
# Создание и обучение модели дерева решений
|
||
|
model = DecisionTreeClassifier()
|
||
|
model.fit(train_data, train_labels)
|
||
|
|
||
|
# Прогнозирование на тестовой выборке
|
||
|
predictions = model.predict(test_data)
|
||
|
|
||
|
# Оценка точности модели
|
||
|
accuracy = accuracy_score(test_labels, predictions)
|
||
|
print('Точность модели на тестовой выборке:', accuracy)
|
||
|
|
||
|
# Прогнозирование на оставшемся проценте данных
|
||
|
remaining_data = data.drop(test_data.index)
|
||
|
remaining_predictions = model.predict(remaining_data[features])
|
||
|
|
||
|
# Вывод результатов
|
||
|
print('Прогнозы по оставшемуся проценту данных:', remaining_predictions)
|
||
|
|
||
|
# Сделайте необходимые выводы
|