Labelcodering uitvoeren in r (met voorbeelden)
Vaak willen we bij machinaal lerencategorische variabelen omzetten in een soort numeriek formaat dat gemakkelijk door algoritmen kan worden gebruikt.
Eén manier om dit te doen is door label encoding te gebruiken, waarbij aan elke categorische waarde een geheel getal wordt toegewezen op basis van alfabetische volgorde.
De volgende schermafbeelding laat bijvoorbeeld zien hoe u elke unieke waarde van een categorische variabele met de naam Team kunt converteren naar een geheel getal op basis van alfabetische volgorde:
Er zijn twee veelgebruikte manieren om labelcodering in R uit te voeren:
Methode 1: Gebruik Base R
df$my_var <- as. numeric (factor(df$my_var))
Methode 2: Gebruik het CatEncoders-pakket
library (CatEncoders) #define original categorical labels labs = LabelEncoder. fit (df$my_var) #convert labels to numeric values df$team = transform(labs, df$my_var)
De volgende voorbeelden laten zien hoe u elke methode in de praktijk kunt gebruiken.
Voorbeeld 1: Labels coderen met Base R
De volgende code laat zien hoe u de functie R base factor() gebruikt om een categorische variabele met de naam team om te zetten in een numerieke variabele:
#create data frame df <- data. frame (team=c('A', 'A', 'B', 'B', 'B', 'B', 'C', 'C'), points=c(25, 12, 15, 14, 19, 23, 25, 29)) #view data frame df team points 1 to 25 2 to 12 3 B 15 4 B 14 5 B 19 6 B 23 7 C 25 8 C 29 #perform label encoding on team variable df$team <- as. numeric (factor(df$team)) #view updated data frame df team points 1 1 25 2 1 12 3 2 15 4 2 14 5 2 19 6 2 23 7 3 25 8 3 29
Let op de nieuwe waarden in de teamkolom :
- “A” werd 1 .
- “B” werd 2 .
- “C” werd 3 .
We hebben de teamkolom met succes geconverteerd van een categorische variabele naar een numerieke variabele.
Voorbeeld 2: Labels coderen met het CatEncoders-pakket
De volgende code laat zien hoe u functies in het CatEncoders()- pakket kunt gebruiken om een categorische variabele genaamd team naar een numerieke variabele te converteren:
library (CatEncoders) #create data frame df <- data. frame (team=c('A', 'A', 'B', 'B', 'B', 'B', 'C', 'C'), points=c(25, 12, 15, 14, 19, 23, 25, 29)) #define original categorical labels labs = LabelEncoder. fit (df$team) #convert labels to numeric values df$team = transform(labs, df$team) #view updated data frame df team points 1 1 25 2 1 12 3 2 15 4 2 14 5 2 19 6 2 23 7 3 25 8 3 29
Opnieuw hebben we de volgende nieuwe waarden gegenereerd in de teamkolom :
- “A” werd 1 .
- “B” werd 2 .
- “C” werd 3 .
Dit komt overeen met de resultaten van het vorige voorbeeld.
Merk op dat u met deze methode ook inverse.transform() kunt gebruiken om de originele waarden van de teamkolom te verkrijgen:
#display original team labels reverse. transform (labs, df$team) [1] “A” “A” “B” “B” “B” “B” “C” “C”
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende taken in R kunt uitvoeren:
Hoe u een categorische variabele maakt, gaat verder in R
Hoe categorische variabelen te creëren in R
Hoe categorische variabelen naar numeriek te converteren in R