Функции быстрого кодирования с несколькими метками - PullRequest
1 голос
/ 17 апреля 2019

В python мы можем создавать функции быстрого кодирования с несколькими метками Пример: https://chrisalbon.com/machine_learning/preprocessing_structured_data/one-hot_encode_features_with_multiple_labels/

У меня есть фрейм данных с несколькими столбцами, и последний - это Label.

Этот ярлык представляет собой следующий список (каждая строка в новой строке):

Label
"A"
"B"
"C"
"D"
"A,B,C"
"A,C"
"D,B,A"
"D,C,B,A"

Я пытаюсь:

levels(data_Frame$Label)<-c("A","B","C","D")
New_data_Frame<-as.data.frame(decodeClassLabels(data_Frame$Label))

Но что я получаю:

A   B   C   D
1   0   0   0
0   1   0   0 
0   0   1   0 
0   0   0   1 
0   0   0   0 
0   0   0   0 
0   0   0   0
0   0   0   0 

То, что я хочу, это:

A   B   C   D
1   0   0   0
0   1   0   0 
0   0   1   0 
0   0   0   1 
1   1   1   0 
1   0   1   0 
1   1   0   1
1   1   1   1 

1 Ответ

1 голос
/ 17 апреля 2019

Один из вариантов - разделить столбец «Ярлыки» на ,, а затем использовать mtabulate

library(qdapTools)
+(mtabulate(strsplit(df1$Label, ",")) > 0) 
#     A B C D
#[1,] 1 0 0 0
#[2,] 0 1 0 0
#[3,] 0 0 1 0
#[4,] 0 0 0 1
#[5,] 1 1 1 0
#[6,] 1 0 1 0
#[7,] 1 1 0 1
#[8,] 1 1 1 1

data

df1 <- structure(list(Label = c("A", "B", "C", "D", "A,B,C", "A,C", 
"D,B,A", "D,C,B,A")), class = "data.frame", row.names = c(NA, 
  -8L))
...