Sklearn Scaler 输出行为
Sklearn Scaler output behavior
我有一种情况,我想将 sklearn 的 StandardScaler 对象应用于我的数据框的一列。代码如下:
import pandas as pd
from sklearn.preprocessing import StandardScaler
df = pd.DataFrame([(1,2,3), (2,3,4), (3,4,5)], columns=['a','b','c'])
scaler = StandardScaler().fit(df['c'].values.reshape(-1,1))
df['d'] = df['c'].apply(scaler.transform)
df
当我缩放 c 列并将结果输出到 d 列时,d 中的值看起来像 [[-1.224744871391589]]
,形状为 (1,1)
我本以为输出值是一个数值,而不是上面看到的列表。我当然可以通过按照 df['d'] = df['d'].apply(lambda x: x[0][0])
的方式做一些事情来解决它,但如果没有必要,我想避免这种额外的并发症。
我是否错误地使用了缩放器对象,或者这是解决它的唯一方法吗?提前致谢!
习惯上是先实例化trasformer/estimator,再进行适配变换。以下是经过一些小改动后的输出:
import pandas as pd
from sklearn.preprocessing import StandardScaler
df = pd.DataFrame([(1,2,3), (2,3,4), (3,4,5)], columns=['a','b','c'])
scaler = StandardScaler()
scaler.fit(df['c'].values.reshape(-1,1))
df['d'] = scaler.transform(df['c'].values.reshape(-1,1))
df
Out[84]:
a b c d
0 1 2 3 -1.224745
1 2 3 4 0.000000
2 3 4 5 1.224745
我有一种情况,我想将 sklearn 的 StandardScaler 对象应用于我的数据框的一列。代码如下:
import pandas as pd
from sklearn.preprocessing import StandardScaler
df = pd.DataFrame([(1,2,3), (2,3,4), (3,4,5)], columns=['a','b','c'])
scaler = StandardScaler().fit(df['c'].values.reshape(-1,1))
df['d'] = df['c'].apply(scaler.transform)
df
当我缩放 c 列并将结果输出到 d 列时,d 中的值看起来像 [[-1.224744871391589]]
,形状为 (1,1)
我本以为输出值是一个数值,而不是上面看到的列表。我当然可以通过按照 df['d'] = df['d'].apply(lambda x: x[0][0])
的方式做一些事情来解决它,但如果没有必要,我想避免这种额外的并发症。
我是否错误地使用了缩放器对象,或者这是解决它的唯一方法吗?提前致谢!
习惯上是先实例化trasformer/estimator,再进行适配变换。以下是经过一些小改动后的输出:
import pandas as pd
from sklearn.preprocessing import StandardScaler
df = pd.DataFrame([(1,2,3), (2,3,4), (3,4,5)], columns=['a','b','c'])
scaler = StandardScaler()
scaler.fit(df['c'].values.reshape(-1,1))
df['d'] = scaler.transform(df['c'].values.reshape(-1,1))
df
Out[84]:
a b c d
0 1 2 3 -1.224745
1 2 3 4 0.000000
2 3 4 5 1.224745