我正在尝试使用sklearn.preprocessing.MinMaxScaler()
缩放或标准化训练数据集的输入。标准化输入后,我知道了非常奇怪的输出图。它不像标准化之前的输入。请看一下这个问题:有关熊猫列标准化的参考:https://stackoverflow.com/a/26415620/4948889
def normalize_data(df):
cols = list(df_stock.columns.values)
x = df.values #returns a numpy array
min_max_scaler = sklearn.preprocessing.MinMaxScaler()
x_scaled = min_max_scaler.fit_transform(x)
df = pd.DataFrame(x_scaled)
df.columns = cols
return df
df_stock = df.copy()
cols = list(df_stock.columns.values)
print('df_stock.columns.values = ', cols)
df_stock_norm = df_stock.copy()
df_stock_norm = normalize_data(df_stock_norm)
请参见输入数据框的前后图。 之前:
plt.figure(figsize=(15, 5));
plt.subplot(1,2,1);
plt.plot(df.open.values[:20], color='red', label='open')
plt.plot(df.close.values[:20], color='green', label='close')
plt.plot(df.low.values[:20], color='blue', label='low')
plt.plot(df.high.values[:20], color='black', label='high')
plt.title('stock price')
plt.xlabel('time [days]')
plt.ylabel('price')
plt.legend(loc='best')
plt.show()
之后:
plt.figure(figsize=(15, 5));
plt.plot(df_stock_norm.open.values[:20], color='red', label='open')
plt.plot(df_stock_norm.close.values[:20], color='green', label='low')
plt.plot(df_stock_norm.low.values[:20], color='blue', label='low')
plt.plot(df_stock_norm.high.values[:20], color='black', label='high')
plt.title('stock')
plt.xlabel('time [days]')
plt.ylabel('normalized price')
plt.legend(loc='best')
plt.show()
说明:
请在两个图表上看到高值和低值。即使在归一化之后,它们也应该是奇怪且不同的。
请让我知道我误会了。
已编辑:
将此作为sample dataset进行测试