Я использую три разные модели регрессии из sklearn.linear_model.
linear_model.LinearRegression.predict () и linear_model.Ridge.predict () оба возвращают одинаковый формат (1300, 1 ) в моем конкретном примере.
linear_model.Lasso.predict () при передаче точно таких же входных данных возвращает a (1300,).Это приводит к ошибкам в моей программе, и мое построение не выполняется.
Я пытался убедиться, что я действительно передаю данные того же формата, проверяя с помощью np.shape () каждую используемую переменную.Я проследил его до возвращаемых значений из .predict (), которые отличаются.
# Crashes when .Lasso is included in mdls
# If I only have the first two in the list (LinearRegression and Ridge) it run and plots fine.
mdls=[linear_model.LinearRegression, linear_model.Ridge, linear_model.Lasso]
argdic=[{'fit_intercept':True},{'fit_intercept':True,'alpha':.5},{'fit_intercept':True,'alpha':0.1}]
i=0
for m,a in zip(mdls,argdic):
## Run regression Fit
res=m(**a).fit(xsk,ysk)
predZmesh=res.predict(meshpts)
predZact=res.predict(actpts)
reZ=ysk['Eff. At Rated Lift'].values.reshape(len(ysk['Eff. At Rated Lift']),1)
zerr=np.subtract(predZact,reZ)
zerr_r=zerr.ravel()
#Normalize the errror for colormap
nrm=colors.Normalize(vmin=zerr_r.min(),vmax=zerr_r.max())
r2=res.score(xsk,ysk)
#Setup Plot
ax=fig.add_subplot(1,len(mdls),i+1,projection='3d')
#Plot scatter of actual data points
#ax.scatter(xsk['Minor Comp. At Temp'],xsk['Major Comp. At Temp'],ysk,marker='o',alpha=0.9)
print('Shape of x,y,z,err.ravel={0},{1},{2},{3}'.format(np.shape(xsk['Minor Comp. At Temp']),np.shape(xsk['Major Comp. At Temp']),np.shape(ysk['Eff. At Rated Lift']),np.shape(zerr_r)))
ax.scatter(xsk['Minor Comp. At Temp'],xsk['Major Comp. At Temp'],ysk['Eff. At Rated Lift'],c=zerr_r,norm=nrm,cmap=plt.cm.get_cmap('RdBu'),marker='o',alpha=0.9)
ax.plot_surface(xmeshpts,ymeshpts,
predZmesh.reshape(xmeshpts.shape),color='red',alpha=0.1)
i+=1
Должна ли функция регрессии не возвращать данные в том же формате?Когда я читаю документацию, она показывает, что формат соответствует.Может ли кто-нибудь подтвердить, что мое ожидание последовательных возвращаемых значений верно?Тогда я могу продолжить отладку.