Python 意外结果sklearn StandardScaler

Python 意外结果sklearn StandardScaler,python,pandas,matplotlib,scikit-learn,Python,Pandas,Matplotlib,Scikit Learn,我尝试用下面的代码测试一些Scaler。 我希望得到类似蓝色分布的结果,但按比例缩放。 我得到的是橙色的。 有人能帮我吗 import matplotlib.pyplot as plt import numpy as np import pandas as pd from sklearn.preprocessing import StandardScaler x1=np.random.normal(loc=21,scale=0.2,size=(100,1)) x2=np.random.nor

我尝试用下面的代码测试一些Scaler。 我希望得到类似蓝色分布的结果,但按比例缩放。 我得到的是橙色的。 有人能帮我吗

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from sklearn.preprocessing import StandardScaler


x1=np.random.normal(loc=21,scale=0.2,size=(100,1))
x2=np.random.normal(loc=1000,scale=550,size=(100,1))

data=np.concatenate((x1,x2),axis=1)

df=pd.DataFrame(data,columns=['x1','x2'])

fig1, axs=plt.subplots(nrows=1, ncols=2)
axs[0].hist(df['x1'])
axs[1].hist(df['x2'])

scaler = StandardScaler()
scaler.fit(df)
df_trans=scaler.transform(df)

fig2, axs=plt.subplots(nrows=1,ncols=2)
axs[0].hist(df_trans[0],color='orange')
axs[1].hist(df_trans[1],color='orange')

使用
df_trans[0]
不会选择整个列。您应将其更改为:

axs[0].hist(df_trans[:,0],color='orange') # all rows, first column
axs[1].hist(df_trans[:,1],color='orange') # all rows, second column
这将产生如下结果: