Это просто еще одно добавление к тому, зачем вам нужен "[[", и как избежать разочарования.
Причина, по которой работают данные [['' day ']] и данные [' day '] не означает, что метод fit ожидает для X кортеж 2 с формой, но не для Y, см. виньетка :
fit (self, X, y, sample_weight = None) [источник] ¶ Подходит для линейной модели.
Параметры X {массивоподобная, разреженная матрица} формы (n_samples, n_features) Обучающие данные
yarray-подобная форма (n_samples,) или (n_samples, n_targets) Целевые значения. При необходимости будет приведен к dtype X *
Так, например:
data[['day']].shape
(43040, 1)
data['day'].shape
(43040,)
np.resize(data['day'],(len(data['day']),1)).shape
(43040, 1)
Они работают, потому что имеют требуемую структуру:
lin_reg.fit(data[['day']], data['pm25'])
lin_reg.fit(np.resize(data['day'],(len(data['day']),1)), data['pm25'])
Пока это не:
lin_reg.fit(data['day'], data['pm25'])
Поэтому перед запуском функции убедитесь, что вы вводите данные в требуемом формате:)