如何将 StandardScaler 应用于单个列?
How to apply StandardScaler to a single column?
我需要将 sklearn
的 StandardScaler
应用于 DataFrame 的单个列 col1
:
df
:
col1 col2 col3
1 0 A
1 10 C
2 1 A
3 20 B
我是这样做的:
from sklearn.preprocessing import StandardScaler
def listOfLists(lst):
return [[el] for el in lst]
def flatten(t):
return [item for sublist in t for item in sublist]
scaler = StandardScaler()
df['col1'] = flatten(scaler.fit_transform(listOfLists(df['col1'].to_numpy().tolist())))
但是,然后我应用inverse_transform
,然后它不给我初始值col1
。相反,它 returns 标准化值:
scaler.inverse_transform(flatten(scaler.fit_transform(listOfLists(df['col1'].to_numpy().tolist()))))
或:
scaler.inverse_transform(df['col1'])
您可以直接在列上安装一个缩放器(因为缩放器需要一个二维数组,您可以通过 df[['col1']]
select 将列作为 DataFrame):
scaler = StandardScaler()
>>> arr = scaler.fit_transform(df[['col1']]).flatten()
array([-0.90453403, -0.90453403, 0.30151134, 1.50755672])
>>> scaler.inverse_transform(arr)
array([1., 1., 2., 3.])
我需要将 sklearn
的 StandardScaler
应用于 DataFrame 的单个列 col1
:
df
:
col1 col2 col3
1 0 A
1 10 C
2 1 A
3 20 B
我是这样做的:
from sklearn.preprocessing import StandardScaler
def listOfLists(lst):
return [[el] for el in lst]
def flatten(t):
return [item for sublist in t for item in sublist]
scaler = StandardScaler()
df['col1'] = flatten(scaler.fit_transform(listOfLists(df['col1'].to_numpy().tolist())))
但是,然后我应用inverse_transform
,然后它不给我初始值col1
。相反,它 returns 标准化值:
scaler.inverse_transform(flatten(scaler.fit_transform(listOfLists(df['col1'].to_numpy().tolist()))))
或:
scaler.inverse_transform(df['col1'])
您可以直接在列上安装一个缩放器(因为缩放器需要一个二维数组,您可以通过 df[['col1']]
select 将列作为 DataFrame):
scaler = StandardScaler()
>>> arr = scaler.fit_transform(df[['col1']]).flatten()
array([-0.90453403, -0.90453403, 0.30151134, 1.50755672])
>>> scaler.inverse_transform(arr)
array([1., 1., 2., 3.])