Прогнозирование погоды с помощью алгоритма классификации KNN
Задача о прогнозировании является достаточно трудоемкой и ее можно решать различными способами. Я решил воспользоваться методами машинного обучения и использовать алгоритм K ближайших соседей для своего кода .
После обучения модели ее точность оказалась примерно 87%(неплохо так). Во время тестирования модели сделал нормализацию и ввел данные, от которых зависит погода.
Если правильно понимаю я должен был получить результат того какая будет погода, но получаю array(2023)
. Не понимаю что не так.
Подскажите пожалуйста и по возможности покритикуйте реализацию решения самой задачи.
данные для погоды брал отсюда.
Ответы (1 шт):
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
классификатора это не нужная операция, если речь идёт о целевой переменной.