首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在标准化后,我们是否应该对我们的数据进行去造假?

在标准化后,我们是否应该对我们的数据进行去造假?
EN

Data Science用户
提问于 2019-08-04 14:05:58
回答 2查看 11.5K关注 0票数 4

如果我们在学习之前使用sklearn库的preprocessing.normalize()函数来规范数据,如下所示:

代码语言:javascript
复制
preprocessing.normalize(training_set)
model.add(LSTM())

我们应该对denormalization的结果做一个LSTM,以得到一个真实的规模预测结果吗?如果是的话,如何去极化?

EN

回答 2

Data Science用户

发布于 2019-08-04 20:03:31

这可以在Python中使用scaler.inverse_transform完成。

考虑使用MinMaxScaler进行规范化的数据集,如下所示:

代码语言:javascript
复制
# normalize dataset with MinMaxScaler
scaler = MinMaxScaler(feature_range=(0, 1))
dataset = scaler.fit_transform(dataset)

# Training and Test data partition
train_size = int(len(dataset) * 0.8)
test_size = len(dataset) - train_size
train, test = dataset[0:train_size,:], dataset[train_size:len(dataset),:]

# reshape into X=t-50 and Y=t
previous = 50
X_train, Y_train = create_dataset(train, previous)
X_test, Y_test = create_dataset(test, previous)

# reshape input to be [samples, time steps, features]
X_train = np.reshape(X_train, (X_train.shape[0], 1, X_train.shape[1]))
X_test = np.reshape(X_test, (X_test.shape[0], 1, X_test.shape[1]))

在从LSTM生成预测后,可以使用scaler.inverse_transform将相同的预测转换回如下:

代码语言:javascript
复制
model = Sequential()
model.add(LSTM(4, input_shape=(1, previous)))
model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer='adam')
model.fit(X_train, Y_train, epochs=100, batch_size=1, verbose=2)
trainpred = model.predict(X_train)
testpred = model.predict(X_test)
trainpred = scaler.inverse_transform(trainpred)
Y_train = scaler.inverse_transform([Y_train])
testpred = scaler.inverse_transform(testpred)
Y_test = scaler.inverse_transform([Y_test])
predictions = testpred
票数 3
EN

Data Science用户

发布于 2019-08-04 20:15:44

问题中的含义是,您正在规范目标变量以及预测器。总的来说,我认为这可能不是正确的做法,你应该把目标排除在正常化之外。在这种情况下,不需要在训练后进行逆变换。

票数 3
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/56924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档