缩放机器学习功能

时间:2018-03-27 09:46:38

标签: python machine-learning data-structures scikit-learn

我有一个关于如何正确扩展数据集的问题。

它由

组成
  1. 我目前存储为秒的日期

  2. 一个介于1和5之间的值

  3. 大约240个博尔值1或0

  4. 所以一行看起来像

    [1514761200, 3, 1, 1, 0, 0, 1, 0, 1,  ......]
    

    我尝试应用scikit StandardScaler,但它会导致一些非常奇怪的值,有些0保持0,其他被缩放到-1.736。如果我然后对数据应用inverse_transform,那么一些bool值会保持奇怪的数字。

    我认为问题是日期栏中的数字很大,我不确定。

    但是,如果,处理日期的更好方法是什么,或者一般如何处理1/2列,这些列不适合其余数据但是必须的。

    感谢。

1 个答案:

答案 0 :(得分:3)

在大多数情况下,缩放分别应用于每个功能,这就是StandardScaler正在做的事情。因此,一些0保持零而其他0变换是完全自然的。请查看以下代码

int_mat = np.array([[0,0],[0,1],[0,2]])

输出

array([[0, 0],
   [0, 1],
   [0, 2]])

现在我们进行缩放

from sklearn.preprocessing import StandardScaler

ssc = StandardScaler()
int_scaled = ssc.fit_transform(int_mat)
inverse_scaling = ssc.inverse_transform(int_scaled)

int_scaled

array([[ 0.        , -1.22474487],
       [ 0.        ,  0.        ],
       [ 0.        ,  1.22474487]])

如你所见,第一个特征(第一列)保持不变,因为它已经为零。

逆变换导致原始矩阵

inverse_scaling

array([[0.00000000e+00, 1.11022302e-16],
       [0.00000000e+00, 1.00000000e+00],
       [0.00000000e+00, 2.00000000e+00]])