ошибка при печати предсказанного значения в множественной линейной регрессии
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)
и он будет работать как для простой, так и для множественной регрессии.