Python 如何仅规范化scikit学习中的某些列?

Python 如何仅规范化scikit学习中的某些列?,python,scikit-learn,normalization,Python,Scikit Learn,Normalization,我有以下类似的数据: [ [0, 4, 15] [0, 3, 7] [1, 5, 9] [2, 4, 15] ] 我使用了oneHotEncoder对这些数据进行预处理,因此适合线性回归,从而得出以下结论: [ [1, 0, 0, 4, 15] [1, 0, 0, 3, 7] [0, 1, 0, 5, 9] [0, 0, 1, 4, 15] ] 然而,我希望将这些数据正常化 到目前为止,我只是将数据正常化,如下所示: preprocessing

我有以下类似的数据:

[
   [0, 4, 15]
   [0, 3, 7]
   [1, 5, 9]
   [2, 4, 15]
]
我使用了
oneHotEncoder
对这些数据进行预处理,因此适合线性回归,从而得出以下结论:

[
   [1, 0, 0, 4, 15]
   [1, 0, 0, 3, 7]
   [0, 1, 0, 5, 9]
   [0, 0, 1, 4, 15]
]
然而,我希望将这些数据正常化

到目前为止,我只是将数据正常化,如下所示:

preprocessing.normalize(data)
但是,这会使所有列(包括类别列)正常化

我的问题如下:

[
   [0, 4, 15]
   [0, 3, 7]
   [1, 5, 9]
   [2, 4, 15]
]
  • 如何仅规范化某些列
  • 对类别数据进行标准化是可取的,还是应该避免
谢谢大家!

用于将数据片段传递给
规范化
。至于您关于规范化类别数据的问题,您可能会在上找到更好的答案

第一个问题的示例:

[1]中的
:将numpy作为np导入
从sklearn.preprocessing导入规范化
#值作为浮点数或规格化会引发类型错误
X1=np.数组([
[1., 0., 0., 4., 15.],
[1., 0., 0., 3., 7.],
[0., 1., 0., 5., 9.],
[0., 0., 1., 4., 15.],
])
在[2]:X1[:,[3,4]]中#最后两列
Out[2]:数组([4,15.]),
[  3.,   7.],
[  5.,   9.],
[  4.,  15.]])
规范化最后两列并分配给新的numpy数组,
X2

[3]中的
X2=normalize(X1[:,[3,4]],轴=0)#轴=0表示列方向
X2
Out[3]:数组([[0.49236596,0.6228411],
[ 0.36927447,  0.29065918],
[ 0.61545745,  0.37370466],
[ 0.49236596,  0.6228411 ]])
现在连接
X1
X2
以获得所需的输出

[4]中的
:np.连接((X1[:,[0,1,2]],X2),轴=1)
Out[4]:数组([1,0,0,0.49236596,0.6228411],
[ 1.        ,  0.        ,  0.        ,  0.36927447,  0.29065918],
[ 0.        ,  1.        ,  0.        ,  0.61545745,  0.37370466],
[ 0.        ,  0.        ,  1.        ,  0.49236596,  0.6228411 ]])

如果您使用的是
pandas.DataFrame
,您可能需要检查

您可以使用sklearn.preprocessing.MinMaxScaler函数将数据缩放到最大值=1,最小值=0。您可以在此处查看文档

亲爱的@kevin,如何应用最小-最大规格化,以产生最大规格化值=1和最小规格化值=0?“norm”(l1、l2或max)的两个参数似乎都不起作用。这与其他答案有何不同?