微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决逆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 举报,一经查实,本站将立刻删除。