Прогнозирование погоды с помощью алгоритма классификации 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 классификатора это не нужная операция, если речь идёт о целевой переменной.