label_binarize классы без потери номера индекса

#python #machine-learning #scikit-learn

Вопрос:

Я пытаюсь бинаризовать целевой класс без потери номера индекса. Однако не удалось и не удалось найти соответствующий параметр в sklearn.предварительная обработка.label_binarize. вход y:

 index  target
 1      0
 3      0
 21     1
 50     1
 

код:

 y=data['target']
y=label_binarize(y, classes=[0, 1])
y=np.hstack((1-y, y))
 

выход:

     0    1
0   1    0
1   1    0
2   0    1
3   0    1
 

результат, который я предпочитаю

     0    1
1   1    0
3   1    0
21   0    1
50   0    1
 

Ответ №1:

Функции Scikit-Learn принимают фрейм данных Pandas в качестве входных данных, но в результате возвращают массив numpy. Вы должны учитывать это правило при работе с кадрами данных.

Следовательно y , это массив numpy. Однако вы можете снова сделать его фреймом данных, как это:

 y = pd.DataFrame(y, index=data.index)  # make it dataframe, and pass data indices
y.head()
 

Теперь, y это:

     0   1
1   1   0
3   1   0
21  0   1
50  0   1
 

Комментарии:

1. Спасибо за понимание!