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)的两个参数似乎都不起作用。这与其他答案有何不同?