Прогнозирование погоды с помощью алгоритма классификации KNN

Задача о прогнозировании является достаточно трудоемкой и ее можно решать различными способами. Я решил воспользоваться методами машинного обучения и использовать алгоритм K ближайших соседей для своего кода .

После обучения модели ее точность оказалась примерно 87%(неплохо так). Во время тестирования модели сделал нормализацию и ввел данные, от которых зависит погода. Если правильно понимаю я должен был получить результат того какая будет погода, но получаю array(2023). Не понимаю что не так.

Подскажите пожалуйста и по возможности покритикуйте реализацию решения самой задачи.

данные для погоды брал отсюда.


Ответы (1 шт):

Автор решения: CrazyElf
X = df.iloc[:,:-1].values 
Y = df.iloc[:,-1:].values 

Если правильно понимаю я должен был получить результат того какая будет погода, но получаю array(2023)

Последняя колонка в вашем датафрейме - это год year. Этим кодом вы из X выкидываете последнюю колонку, а в Y наоборот берёте только эту колонку. Конечно, вы в качестве предсказания получаете год, к которому относятся данные с прогнозом. 2023 - это год, всё правильно.

Получать X и Y для предсказания конкретной колонки датафрейма лучше так:

X = df.drop(columns='conditions').values
Y = df['conditions'].values

Вот теперь вы строите модель для предсказания погодных условий conditions. В числовом виде. Чтобы получить результат "человекочитаемом" виде вам нужно либо расшифровать получаемое число обратно через LabelEncoder, либо просто и не применять вообще LabelEncoder при обработке данных. Для KNN классификатора это не нужная операция, если речь идёт о целевой переменной.

→ Ссылка