ошибка при печати предсказанного значения в множественной линейной регрессии

from sklearn import linear_model
regr = linear_model.LinearRegression()
x = np.asanyarray(train[['ENGINESIZE','CYLINDERS','FUELCONSUMPTION_COMB']])
y = np.asanyarray(train[['CO2EMISSIONS']])
regr.fit (x, y)
# The coefficients
print ('Coefficients: ', regr.coef_)
x1 = np.asanyarray(test[['ENGINESIZE','CYLINDERS','FUELCONSUMPTION_COMB']])
y1 = np.asanyarray(test[['CO2EMISSIONS']])
xy = regr.predict(y1)
print(xy) // an error is generating while printing this (valueError)

это работало в простой линейной регрессии, но здесь не работает в множественной линейной регрессии

2 ответа

regr.predict ожидает такой же формы x.

Более того, когда вы хотите что-то предсказать, это должно быть основано на некотором вводе, а не на выходе.

Так, xy = regr.predict(y1) неправильно.

Ты должен попытаться xy = regr.predict(x1) вместо.

Причина, по которой это работает (но на самом деле это неверно) в простой регрессии в том, что вы предоставляете одномерный массив для regr.predict. Как уже упоминалось, это должно бытьregr.predict(x1) в ответ на regr.predict(y1), поскольку вы пытаетесь предсказать y1 из x1. Алгоритм не "различает"x1 а также y1 в простой регрессии, потому что они оба являются одномерными массивами, поэтому ошибка не возникает.

Однако при множественной регрессии вы подбираете уравнение в 2D, 3D или...N-мерном xмассив. Итак, когда вы бежитеregr.predict(y1), возникает ошибка, потому что вы пытаетесь предсказать с помощью 1D y1 массив.

Просто замените regr.predict(y1) от regr.predict(x1) и он будет работать как для простой, так и для множественной регрессии.

Другие вопросы по тегам