Линейная регрессия машинного обучения — Sklearn

#python-3.x #machine-learning #scikit-learn #linear-regression

#python-3.x #машинное обучение #scikit-учиться #линейная регрессия

Вопрос:

Я новичок в области машинного обучения, и в регрессии обучения у меня есть некоторые сомнения

1. При отработке метода прогнозирования регрессионной модели sklearn learn возникает ошибка, приведенная ниже.

Код:

 sklearn.linear_model.LinearRegression.predict(25)
  

Ошибка:
«Ошибка значения: ожидаемый 2D-массив, вместо этого получен скалярный массив: array = 25. Измените форму ваших данных либо с помощью array.reshape(-1, 1), если ваши данные содержат один объект, либо array.reshape(1, -1), если они содержат один образец.»

Нужно ли мне передавать двумерный массив? Проверено на странице документации sklearn, но не найдено ничего для обновления версии. ** Запускаю свой код на Kaggle
https://www.kaggle.com/aman9d/bikesharingdemand-upx/

2. Повлияет ли индекс набора данных на оценку модели (веса)?

Комментарии:

1. Пожалуйста, серьезно подумайте об исправлении опечаток в вашем коде ( predice ??) и в вашей (мертвой) ссылке…

2. Ссылка работает, и да, здесь опечатка, но в коде, который я написал правильно, и получаю вышеуказанную ошибку.

Ответ №1:

Прежде всего, вы должны поместить свой код так, как вы используете:

 # import, instantiate, fit
from sklearn.linear_model import LinearRegression
linreg = LinearRegression()
linreg.fit(X, y)

# use the predict method
linreg.predict(25)
  

Поскольку то, что вы публикуете в вопросе, не выполняется должным образом, predict метод не является статичным для класса LinearRegression .

Когда вы подгоняете модель, первым шагом является распознавание того, какие данные будут вводиться, в вашем случае они будут похожи на X , это означает, что если вы передадите что-то с другой формой X в модель, это вызовет ошибку.

В вашем примере X , похоже, это экземпляр pd.DataFrame () всего с 1 столбцом, его следует заменить массивом с двумя измерениями, представляющим количество примеров по количеству функций, поэтому, если вы попытаетесь:

 linreg.predict([[25]])
  

должно сработать.

Например, если бы вы пытались выполнить регрессию с использованием более чем 1 объекта, например столбца, скажем, temp и humidity , ваш ввод выглядел бы следующим образом:

 linreg.predict([[25, 56]])
  

Я надеюсь, что это поможет вам и всегда помните, какова форма ваших данных.

Документация: соответствие линейной регрессии

X : массивоподобная или разреженная матрица, форма (n_samples, n_features)

Ответ №2:

Я думаю, что метод predict() scikit-learn …. Модель линейной регрессии ожидает 2D-массив в качестве входных данных, даже если вы прогнозируете одно значение. Чтобы исправить ошибку, вы можете изменить входное значение, используя либо array.reshape(-1, 1), либо array.reshape(1, -1).