#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).