Python 如何使用sklearn.preprocessing'只规范化一列;s标准定标器

Python 如何使用sklearn.preprocessing'只规范化一列;s标准定标器,python,scikit-learn,knn,sklearn-pandas,Python,Scikit Learn,Knn,Sklearn Pandas,如果我有一张单子说 l = [[1, 2], [1, 3], [4, 5], [5, 10]] 如何仅使用sklearn.preprocessing->StandardScaler规范化列2,3,5,10您不必依赖StandardScaler的功能来实现这一点。相反,您可以提取l的第二列,如下所示: 将numpy导入为np #从列表l生成数组。数据类型需要是float #因此,l_arr的第二列可以替换为 #其缩放对应项,而不将其截断为 #整数。 l_arr=np.数组(l,dtype=flo

如果我有一张单子说

l = [[1, 2], [1, 3], [4, 5], [5, 10]]

如何仅使用sklearn.preprocessing->StandardScaler规范化列2,3,5,10您不必依赖
StandardScaler
的功能来实现这一点。相反,您可以提取
l
的第二列,如下所示:

将numpy导入为np
#从列表l生成数组。数据类型需要是float
#因此,l_arr的第二列可以替换为
#其缩放对应项,而不将其截断为
#整数。
l_arr=np.数组(l,dtype=float)
#从l_arr中提取第二列
l_arr_2nd_col=l_arr[:,1]
#将l_arr_2nd_col转换为列向量
l_arr_2nd_col=np.至少2维(l_arr_2nd_col).T
完成后,您可以使用
StandardScaler
,如下所示:

来自sklearn.preprocessing导入StandardScaler的

scaler=StandardScaler()
缩放器安装(左对齐第二列)
l_arr_2nd_col_scaled=缩放器变换(l_arr_2nd_col)
#需要ravel,因为l_arr[:,1]具有形状(4,),但是
#l_arr_2nd_col_缩放具有形状(4,1)。
l_arr[:,1]=l_arr_第二个col_scaled.ravel()
此时,您可以执行以下操作之一:

#完全替换l,包括替换其
#第一列及其浮点对应项。
l=l_arr.tolist()
或者这个:

#仅更换l的选定部件
对于l_元素,l1_在zip中缩放(l,l_arr[:,1]):
l_元素[1]=l1_比例

我也发现了这一点,这一技巧只适用于一行(将来需要它的人):


哦,你能告诉我如何将列表中的第二列替换为这一列吗?@alexale我已经相应地更新了我的答案。不过,我强烈建议不要在此类应用程序中使用列表。我需要列表,因此无法提取它。如果
l
是2D数组,则您的一行代码很有用,如果我使用原始列表
l
,则我需要在一行代码之前添加
l=np.array(l,dtype=float)
(我需要
dtype=float
参数来防止
l
成为整数数组)。是的,在实际代码中使用Python时,比20行更好,通常是这样。在我的回答中,我将其分解为几个步骤,以便至少更清楚地了解我在做什么以及为什么要这样做。
l[:,1]  = scaler.fit_transform(l[:,1].reshape(-1,1)).ravel()