逆minmax trnsformer显示错误** ValueError:形状为18,1的不可广播的输出操作数与广播形状18,27不匹配**

问题描述

我使用MinMax变压器对27个库仑数据进行编码,但是我只使用一列进行训练和预测,然后使用lstm预测测试值。但是当我使用minMax逆变换到(18,1)形状的prdiction值时。显示错误

ValueError:形状为(18,1)的不可广播的输出操作数与广播形状(18,27)不匹配

这是一些代码行:

# convert series to supervised learning
def series_to_supervised(data,n_in=1,n_out=1,dropnan=True):
    n_vars = 1 if type(data) is list else data.shape[1]
    df = DataFrame(data)
    cols,names = list(),list()
    # input sequence (t-n,... t-1)
    for i in range(n_in,-1):
        cols.append(df.shift(i))
        names += [('var%d(t-%d)' % (j+1,i)) for j in range(n_vars)]
    # forecast sequence (t,t+1,... t+n)
    for i in range(0,n_out):
        cols.append(df.shift(-i))
        if i == 0:
            names += [('var%d(t)' % (j+1)) for j in range(n_vars)]
        else:
            names += [('var%d(t+%d)' % (j+1,i)) for j in range(n_vars)]
    # put it all together
    agg = concat(cols,axis=1)
    agg.columns = names
    # drop rows with NaN values
    if dropnan:
        agg.dropna(inplace=True)
    return agg
 
# load dataset
dataset = read_csv('newtours.csv',header=0,index_col=0)#hh.csv 20 train
values = dataset.values
#print(values)

values = values.astype('float32')
# normalize features
scaler = MinMaxScaler(feature_range=(0,1))
scaled = scaler.fit_transform(values)
# frame as supervised learning
reframed = series_to_supervised(scaled,1,1) #####################scaled

# split into train and test sets
values = reframed.values
#print(values)
n_train = 57
train = values[:n_train,:]
test = values[n_train:,:]
print (train)
train_X = train[:,26]
print (train_X)
train_y = train[:,53]
print (train_y)
train_X = train_X.reshape(len(train_X),1)
print (train_X)
train_y = train_y.reshape(len(train_X),1)
print (train_y)
train_X = train_X.reshape(train_X.shape[0],train_X.shape[1])
print (train_X)
train_y = train_y.reshape(train_y.shape[0],train_y.shape[1])
print (train_y)

test_X = test[:,26]
test_y = test[:,53]

test_X = test_X.reshape(len(test_X),1)

test_y = test_y.reshape(len(test_X),1)

test_X = test_X.reshape(test_X.shape[0],test_X.shape[1])

test_y = test_y.reshape(test_y.shape[0],test_y.shape[1])

model = Sequential()
#model.add(LSTM(3,input_shape=( train_X.shape[1],train_X.shape[2]),stateful=True))
model.add(LSTM(1,input_shape=(train_X.shape[1],train_X.shape[2])))
model.add(Dense(1))
model.compile(loss='mean_squared_error',optimizer='adam')
model.fit(train_X,train_y,epochs=10,batch_size=1,verbose=2)
yhat = model.predict(test_X)
yhat = yhat.reshape(len(yhat),1)
print(yhat.shape)
yhat1=scaler.inverse_transform(yhat)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)