2016-01-31 1 views
3

У меня есть данные, подобные следующим:Как нормализовать только определенные столбцы в scikit-learn?

[ 
    [0, 4, 15] 
    [0, 3, 7] 
    [1, 5, 9] 
    [2, 4, 15] 
] 

я использовал oneHotEncoderhttp://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.OneHotEncoder.html#sklearn.preprocessing.OneHotEncoder.fit_transform для предварительной обработки этих данных и поэтому подходит для линейной регрессии, чтобы дать мне это:

[ 
    [1, 0, 0, 4, 15] 
    [1, 0, 0, 3, 7] 
    [0, 1, 0, 5, 9] 
    [0, 0, 1, 4, 15] 
] 

Однако, я тогда хотел бы нормализовать эти данные.

До сих пор я просто нормализовать данные следующим образом:

preprocessing.normalize(data) 

Однако это нормирует все столбцы, включая категории них.

Мои вопросы следующие:

  • Как нормализовать только определенные столбцы?
  • Желательно ли нормализовать данные категории или я должен избегать этого?

Спасибо!

ответ

5

Используйте numpy, чтобы передать кусочек ваших данных на номер normalize. Что касается вашего вопроса о нормализации данных категории, вы, вероятно, получите лучший ответ на этот вопрос на CrossValidated.

Пример первого вопроса:

In [1]: import numpy as np 
     from sklearn.preprocessing import normalize 

     # Values as floats or normalize raises a type error 
     X1 = np.array([ 
         [1., 0., 0., 4., 15.], 
         [1., 0., 0., 3., 7.], 
         [0., 1., 0., 5., 9.], 
         [0., 0., 1., 4., 15.], 
         ]) 

In [2]: X1[:, [3,4]] # last two columns 
Out[2]: array([[ 4., 15.], 
       [ 3., 7.], 
       [ 5., 9.], 
       [ 4., 15.]]) 

Нормализация последние два столбца и назначить новый Numpy массив, X2.

In [3]: X2 = normalize(X1[:, [3,4]], axis=0) #axis=0 for column-wise 
     X2 
Out[3]: array([[ 0.49236596, 0.6228411 ], 
       [ 0.36927447, 0.29065918], 
       [ 0.61545745, 0.37370466], 
       [ 0.49236596, 0.6228411 ]]) 

Теперь конкатенации X1 и X2 для желаемых результатов.

In [4]: np.concatenate((X1[:,[0,1,2]], X2), axis=1) 
Out[4]: array([[ 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 ]])