Первый fit и predict на своих данных
Содержание курса
predict для новых строк: схема признаков и результат
Модель обучена на X с колонками ['температура', 'влажность']. Чтобы получить прогноз для новых дней, нужно собрать DataFrame точно с теми же столбцами в том же порядке — без столбца прокатов.
X_new = pd.DataFrame({
'температура': [20, 27],
'влажность': [65, 50]
})
predictions = model.predict(X_new)
print(predictions)
Вывод:
[227.40235474 313.54886937]
predict возвращает NumPy-массив длиной 2 — по одному числу на каждую строку X_new. Первый элемент, 227.4, — прогноз для дня с температурой 20 и влажностью 65; второй, 313.5, — для температуры 27 и влажности 50. Именно такой вывод должен появиться у вас при запуске кода на тех же четырёх обучающих точках.
Теперь о том, что ломает предсказание. Схема X_new должна в точности совпадать со схемой X при fit. Два типичных нарушения:
Лишний столбец — например, если случайно добавить прокатов в X_new. Актуальный scikit-learn увидит несоответствие числа признаков и бросит ValueError.
Перестановка столбцов — если X_new содержит ['влажность', 'температура'] вместо ['температура', 'влажность']. При передаче именованного DataFrame sklearn использует имена столбцов и в последних версиях выдаст предупреждение или ошибку. При передаче безымянного NumPy-массива sklearn может выдать предупреждение о том, что у входа нет имён признаков — но это предупреждение касается только отсутствия имён, а не порядка значений. Если число столбцов совпадает, перепутанный порядок пройдёт без дополнительного сигнала: модель подставит значение влажности туда, где ожидает температуру, и вернёт неверный прогноз.
Диагностика простая:
print(list(X.columns)) # ['температура', 'влажность']
print(list(X_new.columns)) # должно быть то же самое
Если списки совпадают — схема верна, и predict вернёт корректный результат.
