规范化sklearn
问题描述:
比方说,我有一个熊猫的数据帧,我想正常化只有某些属性,但不能使用此功能的帮助下,整个数据帧:规范化sklearn
preprocessing.normalize
,我想就地这些标准化列到我的数据框。但我不能因为它有不同的格式(numpy数组)。
我已经看到了怎么办正常化其他方式,例如我不喜欢这样的:
s0 = X.iloc[:,13:15]
X.iloc[:,13:15] = (s0 - s0.mean())/(s0.max() - s0.min())
X.head()
但我真的需要使用sklearn做到这一点。 谢谢,堆栈!
答
你在做什么是Min-max缩放。在scikit中,"normalize"
与你想要做的有不同的含义。
尝试MinMaxScaler。
而大多数sklearn转换器只输出numpy数组。对于数据框中,你可以简单地重新分配列数据框像下面的例子:
import pandas as pd
import numpy as np
df = pd.DataFrame(data=np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]), columns=['A', 'B', 'C'])
现在让我们说你只需要最小 - 最大规模列A和C:
from sklearn.preprocessing import MinMaxScaler
minmax = MinMaxScaler()
df[['A', 'C']] = minmax.fit_transform(df[['A', 'C']])
你有没有意思是's0 - s0.min()'或's0 - s0.mean()'?前者是最小/最大尺度,后者是什么? – Psidom