Coursera Learner working on a presentation with Coursera logo and
Coursera Learner working on a presentation with Coursera logo and

Categorische codering is een techniek om categorische gegevens te coderen. Bedenk dat categorische gegevens de sets van variabelen zijn die labelvariabelen bevatten in plaats van numerieke waarden. Veel algoritmen voor machinaal leren zijn niet in staat om categorische variabelen te verwerken. Daarom is het belangrijk de gegevens in een geschikte vorm te coderen, zodat u deze variabelen kunt voorbewerken. Omdat u uw model moet passen en evalueren, moet u categorische gegevens coderen en alle input- en outputvariabelen omzetten in numerieke waarden. Op die manier zal het model in staat zijn de informatie te begrijpen en te extraheren die de gewenste output genereert. Een reeks gegevens varieert naar gelang van het aantal mogelijke waarden.

De meeste categorische variabelen zijn nominaal. Deze variabelen helpen bij het categoriseren en labelen van de attributen. De variabelen bevatten verschillende waarden, en elke waarde vertegenwoordigt een afzonderlijke categorie. Zo is kleur een variabele, die verschillende waarden bevat, zoals blauw, groen, geel. Evenzo is een huisdier een variabele, maar katten en honden zijn afzonderlijke waarden die verschillende categorieën vertegenwoordigen. In een ander voorbeeld is een plaats een variabele, maar de eerste, tweede en derde zijn de waarden. Deze categorieën kunnen al dan niet een natuurlijke relatie met elkaar hebben. In het bovenstaande voorbeeld van een plaats, kunt u zien dat de plaats een variabele is en dat de categorieën in de natuurlijke volgorde staan. U kunt dit soort variabelen ordinale variabelen noemen.

Labelgegevens omzetten in Numeriek

Er zijn twee stappen om label- of categorische gegevens om te zetten in numerieke gegevens:

1. Integer coderen

In deze eerste stap wijst u de integerwaarde toe aan elke categoriewaarde. Bijvoorbeeld, blauw is 1, groen is 2, en geel is 3. U kunt dit type codering gemakkelijk omkeren. Je kunt integer coderen ook label coderen noemen. Voor veel variabelen is deze stap voldoende om het model te doorlopen. Er is een natuurlijke geordende relatie tussen verschillende gehele waarden. Je kunt de relatie koppelen door middel van een machine learning algoritme. Als u bijvoorbeeld ordinale variabelen zoals plaats beschouwt, zijn de categorieën al geordend. Daarom hoeft u de relatie tussen de variabelen niet te vinden. Labelcodering zou dus voldoende zijn.

2. Een-hot codering

Categorische variabelen bevatten geen relatie tussen variabelen zoals ordinale variabelen. Daarom moet u het coderingsproces naar een ander niveau tillen. Voor dit soort gegevens is integer coderen niet voldoende. Zelfs als u de gegevens codeert zonder natuurlijke volgorde, zullen de categorieën niet op elkaar aansluiten. Vanwege de slechte prestaties zal het resultaat onverwacht zijn.

Vervolgens is one-hot codering een techniek om toe te passen op de integer representatie. Tijdens het coderen van de gegevens met behulp van deze stap, zal het model de gehele variabelen verwijderen. Vervolgens wordt voor elke unieke gehele waarde een nieuwe binaire variabele opgenomen. Als we bijvoorbeeld de kleurvariabele beschouwen, moeten we 3 categorieën coderen. Om dat resultaat te bereiken, plaatst u de waarde “1” voor de binaire kleurvariabele en “0” voor de andere.

Hoe een Hot Encoding te coderen

U kunt het proces van coderen begrijpen met het volgende voorbeeld. Om de taken eenvoudig en snel te maken, moet u bibliotheken gebruiken. Bibliotheken zijn vooraf geschreven codes die helpen om uw taken te optimaliseren. Zonder het gebruik van relevante bibliotheken, zullen uw taken vervelend worden. Begin met het opnemen van drie veelgebruikte bibliotheken in het project. Deze bibliotheken zijn sklearn, NumPy, en pandas.

uit sklearn.preprocessing importeer LabelEncoder, OneHotEncoder
importeren NumPy als np
importeer pandas als pd

Zodra je jezelf hebt uitgerust met de gereedschappen, kun je beginnen met coderen. Om het concept te begrijpen, gebruik deze verzonnen dataset. Gebruik de panda bibliotheek om de dataset in te voeren. Je gebruikt .read_csv en de bestandsnaam om het bestand te openen.

dataset = pd.read_csv(‘made_up_thing.csv’)

Tot nu toe hebt u voor zichzelf sprekende taken uitgevoerd. De volgende stap zal echter een beetje lastiger zijn. Wanneer je een spreadsheet als invoer beschouwt, geef je wel of niet om sommige kolommen. Om het proces eenvoudig te houden, accepteren we alle kolommen behalve de laatste. Nadat je de op te nemen kolommen hebt bekeken, voeg je de .iloc toe. Dit is een functie van de pandas bibliotheek. Je zal het gebruiken om de gegevens van een specifieke kolom te kiezen.

X = dataset.iloc[:, :-1].values

Na het selecteren van het segment, in de bovenstaande code, zullen we de waarden opnemen met behulp van de .values functie. U kunt het begrijpen als het eerste deel van deze code zal de waarden selecteren, en het tweede deel zal de waarden in dit gedeelte beschouwen.

In dit voorbeeld, neem je een label encoder op samen met één hot encoder. Aangezien een hot encoder getallen omzet in binair, en u categorie bevat als de gegevens, moet u eerst de categorieën omzetten in getallen. Daarom zullen we een labelencoder gebruiken vóór een hot encoder. Stel nu de labelencoder in met de volgende code:

le = LabelEncoder()

Na het omzetten van categorieën in getallen gebruiken we sklearn’s .fit_transform functie. Omdat sklearn een one-hot codeer bibliotheek is, zal het deze getallen omzetten in binair zodat het model het kan begrijpen. Gebruik de volgende code voor het coderen van de eerste kolommen:

X[:, 0] = le.fit_transform(X[:, 0])

Nu moet u één code-encoder toevoegen om het coderen te voltooien.

ohe = OneHotEncoder(categorical_features = [0])
X = ohe.fit_transform(X).toarray()

Categorical_features is een functie om de kolom op te geven die moet worden gecodeerd met one-hot-encodering. Aangezien we de eerste kolom coderen, voegen we [0] toe. Nu zal de fit_transform-functie de geselecteerde variabelen omzetten in binaire.

We zijn klaar met de conversie. Houd in gedachten dat we 0 opnemen voor de eerste kolom. Als u meer kolommen wilt toevoegen, moet u het kolomnummer toevoegen. Om meer dan één kolom toe te voegen, moet je een “for-lus” toevoegen zoals hieronder:

le = LabelEncoder()#voor 10 kolommen
voor i in range(10):
X[:,i] = le.fit_transform(X[:,i])

Conclusie

Samenvattend is categorische codering een techniek die categorische gegevens omzet in binaire. Aangezien het machine-learning model geen categorische gegevens kan verwerken, moet je ze omzetten in numerieke of binaire gegevens, afhankelijk van het algoritme. Er zijn twee stappen om categorische of labelgegevens om te zetten in binaire gegevens. Labelcodering is de eerste techniek voor categorische codering. Zij zet de gegevens om in numerieke vorm. Gebruik labelcodering voor ordinale gegevens. Voor niet-ordinale gegevens gebruikt u de one-hot coderingstechniek. Dit is een doeltreffende methode om uw gegevens in binaire vorm om te zetten.