繁体   English   中英

如何将包含正数和负数的数据归一化为0和1?

[英]How to normalize data which contain positive and negative numbers into 0 and 1?

我有一个包含负值和正值的数据集。 然后这里我使用MinMaxScaler()将数据归一化为0和1。但是因为归一化后的数据里面有负值和正值,所以归一化不是最优的,所以得到的预测结果不是最优的。 然后我尝试使用 abs() 将负数据更改为正数据,然后使用 MinMaxScaler() 对 abs() 的结果进行归一化,结果会更好。 有没有办法让我保持负值和正值但有很好的预测?

我最后一次激活 function 是Sigmoid

这是我的 model 结构:

model = Sequential()
model.add(LSTM(64, activation='relu',  return_sequences= False, input_shape= (50,89)))
model.add(Dense(32,activation='relu'))
model.add(Dense(16,activation='relu'))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss = 'mse', optimizer=Adam(learning_rate=0.002), metrics=['mse'])
model.summary()

model结构

这是我用 abs() 规范化的代码:

df = pd.read_csv('1113_Rwalk40s1.csv', low_memory=False)
columns = ['Fx', 'Fy', 'Fz', 'Mx', 'My', 'Mz']]
selected_df = df[columns]
FCDatas = selected_df[:2050]
FCDatas = abs(FCDatas)

SmartInsole = np.array(SIData[:2050])
FCData = np.array(FCDatas)
Dataset = np.concatenate((SmartInsole, FCData), axis=1)

scaler_in = MinMaxScaler(feature_range=(0, 1))
scaler_out = MinMaxScaler(feature_range=(0, 1))
data_scaled_in = scaler_in.fit_transform(Dataset[:,0:89])
data_scaled_out = scaler_out.fit_transform(Dataset[:,89:90])

使用 abs() 的结果

这是我没有 abs() 的规范化代码:

df = pd.read_csv('1113_Rwalk40s1.csv', low_memory=False)
columns = ['Fx', 'Fy', 'Fz', 'Mx', 'My', 'Mz']]
selected_df = df[columns]
FCDatas = selected_df[:2050]

SmartInsole = np.array(SIData[:2050])
FCData = np.array(FCDatas)
Dataset = np.concatenate((SmartInsole, FCData), axis=1)

scaler_in = MinMaxScaler(feature_range=(0, 1))
scaler_out = MinMaxScaler(feature_range=(0, 1))
data_scaled_in = scaler_in.fit_transform(Dataset[:,0:89])
data_scaled_out = scaler_out.fit_transform(Dataset[:,89:90])

没有 abs() 的结果

您可以将MinMaxScaler范围更改为[-1,1]之间,如果您希望保持最小数字(在您的情况下为负)仍然为负,但最大数字仍然为正。 这有帮助吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM