In R is het werken met lijsten en dataframes een fundamenteel onderdeel van datamanipulatie. De dubbele haakjesnotatie [[]] biedt een directe manier om toegang te krijgen tot de inhoud van een specifiek element binnen een lijst. Dit in tegenstelling tot de enkele haakjesnotatie [], die een sublijst retourneert, waarbij de structuur van de lijst behouden blijft. Als je bijvoorbeeld de gegevens binnen een lijst genaamd my_list wilt extraheren, kun je dit doen door het element aan te roepen met de dubbele haakjesnotatie:
Deze notatie zorgt ervoor dat de inhoud van het element zelf wordt opgehaald, niet de lijst waarin het zich bevindt. Dit is een belangrijk verschil ten opzichte van de enkele haakjesnotatie, die de elementen als sublijst retourneert:
Het resultaat van deze operatie is een lijst die het element als onderdeel van een nieuwe lijst bevat. De keuze tussen deze twee notaties hangt af van de gewenste output: wil je alleen de inhoud van het element of ook de structuur van de lijst behouden?
Naast lijsten bevat R een datagestructuur die bekend staat als een dataframe. Dataframes lijken op lijsten, maar ze hebben de specifieke eis dat alle kolommen dezelfde lengte moeten hebben. Dataframes zijn dus tabellen met gestructureerde gegevens, waarbij elke kolom als een vector wordt behandeld en de rijen de observaties zijn. Om een lijst om te zetten naar een dataframe, kun je eenvoudig de functie as.data.frame() gebruiken:
Dataframes kunnen eenvoudig worden geconverteerd naar lijsten, mits de elementen in de lijst dezelfde lengte hebben, zoals we zagen bij het voorbeeld met employee_list:
Deze interactiviteit tussen dataframes en lijsten maakt R een flexibele tool voor data-analyse. Het is belangrijk om te begrijpen dat wanneer je met grote datasets werkt, de structuur van je gegevens invloed heeft op de manier waarop je ze kunt manipuleren.
Bij het werken met datasets komt het vaak voor dat je gegevens niet handmatig invoert, maar importeert vanuit externe bronnen. De meest gebruikelijke manier om gegevens in R te laden, is via CSV-bestanden. CSV-bestanden zijn platte tekstbestanden waarin de waarden worden gescheiden door komma's, en de eerste rij de kolomlabels bevat. Het is essentieel om te begrijpen hoe R deze bestanden leest, en hoe je de juiste functies gebruikt om ze effectief in je werkruimte te laden.
Eenmaal geladen, kun je de structuur van je dataset bekijken met functies zoals head() of tail(), die respectievelijk de eerste en laatste zes rijen van de dataset tonen. Dit maakt het mogelijk om snel een overzicht van je data te krijgen:
Deze technieken helpen bij het verkennen van grote datasets, zoals de gegevens van Olympische atleten die in dit voorbeeld worden gebruikt. Het bekijken van de structuur en het inladen van de gegevens zijn cruciale stappen voordat je verdergaat met complexere analyses.
Wanneer je een dataset hebt geladen, is het ook nuttig om de klasse van het object te controleren om er zeker van te zijn dat het correct is geladen. Dit doe je eenvoudig door de class() functie te gebruiken:
Naast het inladen van gegevens, is het essentieel om te begrijpen hoe de gegevens zijn georganiseerd en hoe je er manipulaties op kunt uitvoeren. R biedt krachtige functies voor het filteren, aggregeren en transformeren van gegevens. Het is de basis om complexere analyses uit te voeren, en biedt gebruikers de mogelijkheid om hun dataset aan te passen aan hun specifieke behoeften.
Het is belangrijk te begrijpen dat hoewel R deze flexibiliteit biedt, de efficiëntie van je analyses vaak afhankelijk is van de structuur van de gegevens die je gebruikt. Het is niet alleen de inhoud van de gegevens die telt, maar ook de manier waarop ze zijn georganiseerd. Dit betekent dat een goede kennis van dataframes en lijsten essentieel is voor elke R-gebruiker die zich bezighoudt met gegevensanalyse.
Waarom is R geschikt voor cultuurdata?
De opkomst van digitale technologieën heeft de manier waarop we cultuurdata verzamelen en analyseren drastisch veranderd. Deze technologische vooruitgang heeft de noodzaak gecreëerd voor krachtigere hulpmiddelen die in staat zijn om enorme, complexe datasets efficiënt te verwerken en te analyseren. Hoewel het gebruik van R voor culturele analyse in eerste instantie misschien ongebruikelijk lijkt vanwege de sterke nadruk op statistiek, is het juist diezelfde statistische benadering die R bijzonder geschikt maakt voor de behoeften van de geesteswetenschappen.
R, ontwikkeld in de vroege jaren 90 aan de Universiteit van Auckland door Ross Ihaka en Robert Gentleman, werd oorspronkelijk gecreëerd als een software-oplossing voor statistici die werkten in een onderwijsomgeving. De bedoeling was om een programma te ontwikkelen dat geschikt was voor statistisch onderwijs, maar al snel breidde R zich uit naar een veelzijdig programma dat wetenschappers in tal van disciplines ging ondersteunen. De kracht van R ligt in de uitgebreide bibliotheek van pakketten die het mogelijk maken om op maat gemaakte analyses te maken, iets wat in de geesteswetenschappen steeds belangrijker wordt naarmate onderzoekers zich meer met complexe data gaan bezighouden.
De acceptatie van R binnen de geesteswetenschappen is de afgelopen jaren snel gegroeid, mede dankzij de veelzijdigheid ervan. R biedt onderzoekers in de digitale geesteswetenschappen en culturele analyse een krachtige toolkit voor het verwerken van diverse vormen van data: tekst, afbeeldingen, getallen en geografische informatie. Dit is een groot voordeel, aangezien onderzoekers vaak te maken hebben met een breed scala aan gegevens die allemaal hun eigen specifieke analysemethoden vereisen. Het gebruik van een algemene programmeertaal als R biedt de mogelijkheid om verschillende analysemethoden te combineren, waardoor de mogelijkheden voor onderzoek aanzienlijk worden vergroot.
De essentie van R ligt niet alleen in zijn flexibiliteit, maar ook in zijn uitgebreide ecosysteem van pakketten. Deze pakketten, die door een gemeenschap van gebruikers continu worden gedeeld en verbeterd, maken het mogelijk om op maat gemaakte tools te ontwikkelen die voldoen aan de specifieke behoeften van culturele onderzoekers. Zo kunnen nieuwe onderzoekers zich snel aanpassen aan de taal door gebruik te maken van reeds bestaande pakketten, wat de leercurve aanzienlijk verkort.
Een belangrijk concept in de wereld van R is "tidy data", een term die afkomstig is van Hadley Wickham. Tidy data verwijst naar een gestandaardiseerde manier van data structureren die het werk van onderzoekers aanzienlijk vereenvoudigt. In plaats van zich te verliezen in de complexiteit van data-analyse, kunnen onderzoekers zich richten op het interpreteren van de gegevens, omdat de onderliggende structuur hen helpt om efficiënt te werken. Dit concept sluit goed aan bij de principes van relationele databases, die sinds de jaren 70 worden gebruikt om data op een efficiënte manier te structureren en te beheren. Terwijl veel van de traditionele databaseprincipes zijn ontworpen voor grote hoeveelheden data, is tidy data specifiek bedoeld voor kleinere, maar niet minder complexe datasets die vaak in de geesteswetenschappen worden gebruikt.
Tidy data maakt gebruik van enkele eenvoudige regels: elke variabele vormt een kolom, elke observatie vormt een rij, en elke waarde is een cel. Deze opzet zorgt ervoor dat de data gemakkelijk gemanipuleerd en geanalyseerd kunnen worden, wat bijzonder handig is voor onderzoekers die zich met culturele data bezighouden. Dit type gestructureerde data biedt niet alleen praktische voordelen in termen van efficiëntie, maar het zorgt er ook voor dat de analyse process correcter en betrouwbaarder is.
R’s kracht wordt verder versterkt door de filosofie van gedeelde kennis binnen zijn gemeenschap. Het systeem van de Comprehensive R Archive Network (CRAN) heeft de toegang tot duizenden pakketten vereenvoudigd, waardoor onderzoekers wereldwijd de kans krijgen om hun werk te verfijnen en te delen. Dit creëert een virtuele omgeving waarin kennis en technologie voortdurend met elkaar worden verbonden, waardoor de wetenschap vooruit wordt geholpen.
Wat belangrijk is om te begrijpen, is dat R niet alleen een hulpmiddel is voor data-analyse, maar een fundamentele verandering in de manier waarop onderzoekers met data omgaan. Door de open toegang tot tools en technieken, kunnen onderzoekers experimenteren en de volledige potentie van hun data benutten. Dit verandert de manier waarop onderzoek wordt gedaan binnen de geesteswetenschappen, doordat het hen in staat stelt om de enorme hoeveelheden ongestructureerde of 'rommelige' data te verwerken en te transformeren naar bruikbare, gestructureerde informatie.
De keuze voor R is daarmee niet alleen pragmatisch, maar ook een reflectie van de veranderingen die plaatsvinden in het wetenschappelijk onderzoek, waarbij de grens tussen traditionele geesteswetenschappen en digitale technologieën vervaagt. Het gebruik van R stelt onderzoekers in staat om nieuwe inzichten te verwerven en belangrijke culturele fenomenen te analyseren met de precisie en het gemak die andere analysemethoden misschien niet kunnen bieden.
Hoe bouw je een machine learning workflow met tidymodels?
Het bouwen van een machine learning-model vereist meer dan alleen het kiezen van een geschikt algoritme. Het vereist een gestructureerde aanpak om het proces van gegevensverwerking, modelselectie en evaluatie te automatiseren. Dit is waar workflows in de “tidymodels” suite van R-omgevingen van pas komen. Ze bieden een coherente en gestructureerde manier om de verschillende componenten voor machine learning-taken samen te stellen, en encapsuleren het gehele proces binnen een enkel object. Hierdoor kunnen gebruikers repetitief coderen en potentiële fouten vermijden die vaak optreden wanneer deze stappen afzonderlijk worden behandeld. Een typische workflow in “tidymodels” bestaat uit twee belangrijke onderdelen: de model-specificatie en een “recipe” (recept).
De model-specificatie definieert welk type model we willen bouwen, inclusief het algoritme, de bijbehorende modus en engine. In tegenstelling tot de model-specificatie richt de recipe zich op de gegevensverwerking. Het werkt als een blauwdruk voor de preprocessing van gegevens, waarin we precies aangeven hoe de data vóór het trainen van het model moet worden bewerkt. Dit kan normalisatie of schaling van variabelen, codering van categorische kenmerken, imputatie van ontbrekende waarden en zelfs het creëren van nieuwe kenmerken door middel van verschillende transformaties omvatten. Het gebruik van een recipe maakt het mogelijk om deze stappen reproduceerbaar en consistent te houden, wat cruciaal is voor de integriteit van de prestaties van het model.
Om een workflow te starten, roepen we de functie workflow() aan en slaan het resultaat op in een object. Zo ziet dat eruit:
Op dit punt bevat het workflow-object nog geen gegevens. We moeten zowel ons model als onze recipe toevoegen. Laten we eerst de model-specificatie definiëren. We hebben al gezien hoe we een model-specificatie voor besluitbomen maken, en het proces voor het maken van een random forest-specificatie is vrijwel identiek. Het enige wat we hoeven te doen, is de juiste engine en mode instellen voor random forests. Aangezien we de “ranger”-package gebruiken, moet je deze wellicht installeren en laden als je dat nog niet hebt gedaan.
Nadat de model-specificatie is opgesteld, kunnen we deze in de workflow integreren. Dit gebeurt met de functie add_model(), die een cruciaal onderdeel is van het bouwen van workflows in “tidymodels”. Door deze functie te gebruiken, wordt het gedefinieerde model een onderdeel van het grotere workflow-object:
Op dit punt hebben we ons model geïntegreerd, maar er is een ander belangrijk onderdeel dat vaak vergeten wordt: de data preprocessing. “Tidymodels” biedt hiervoor een package genaamd “recipes”, waarmee we snel de nodige data preprocessing en feature engineering kunnen uitvoeren. Dit is vaak een tijdrovend proces, maar het is essentieel om de gegevens geschikt te maken voor ons model.
Verschillende modellen vereisen verschillende soorten verwerkte gegevens. Dit betekent dat we vaak een aantal preprocessing-stappen moeten uitvoeren, zoals het centreren en schalen van numerieke variabelen, het coderen van categorische variabelen, het behandelen van ontbrekende data of zelfs het creëren van interactievariabelen. Het proces van gegevensverwerking kan variëren afhankelijk van de complexiteit van de gegevens en de specifieke eisen van het model. Sommige modellen, zoals random forests, hebben echter weinig preprocessing nodig, omdat ze zowel categorische als numerieke variabelen kunnen verwerken en vaak robuust zijn voor uitbijters.
Maar zelfs als random forests weinig preprocessing vereisen, is het handig om een basisrecipe te maken voor het geval je later complexere preprocessing nodig hebt. Hier is hoe we een recipe kunnen creëren:
Nadat we de formule voor de recipe hebben gedefinieerd, kunnen we stappen toevoegen die beschrijven welke transformaties we willen uitvoeren op de gegevens. We gebruiken hiervoor de step_-functie, gevolgd door een actie voor de transformatie. Bijvoorbeeld, om numerieke voorspellers te normaliseren, kunnen we de functie step_normalize() aanroepen met een selector die deze numerieke kolommen identificeert.
We kunnen ook ontbrekende waarden imputer, bijvoorbeeld met de functie step_impute_median(), waarbij ontbrekende waarden in een numerieke kolom worden vervangen door de mediaan van de beschikbare waarden in die kolom. Dit is robuust voor uitbijters en kan een zinvolle keuze zijn wanneer de gegevensverdeling scheef is.
Laten we nu deze preprocessing-stappen toevoegen aan de recipe:
Nadat we de recipe hebben gecreëerd en alle benodigde preprocessing-stappen hebben toegevoegd, kunnen we deze integreren in de workflow met de functie add_recipe():
Met deze stappen hebben we een volledig werkende workflow opgezet waarin zowel het model als de preprocessing zijn geïntegreerd. Dit zorgt ervoor dat het gehele machine learning-proces gestroomlijnd en reproduceerbaar is, wat essentieel is voor het verkrijgen van betrouwbare resultaten.
De workflow biedt een krachtig hulpmiddel voor machine learning, vooral wanneer het nodig is om consistentie en efficiëntie in de modelbouw te waarborgen. Bovendien maakt de modulariteit van de workflow het eenvoudig om verschillende model- en preprocessing-combinaties te testen, waardoor experimenten sneller en eenvoudiger kunnen worden uitgevoerd.
Hoe kunnen draadloze consensusprotocollen bestand zijn tegen storingen in dynamische netwerkomgevingen?
Hoe de Media en Politieke Macht met elkaar Verbonden zijn: Het Geval Fox News en de Democraten
Waarom geheimen vaak moeilijk te bewaren zijn in complexe relaties
Wat betekent de waarheid in een wereld van relatieve perspectieven?

Deutsch
Francais
Nederlands
Svenska
Norsk
Dansk
Suomi
Espanol
Italiano
Portugues
Magyar
Polski
Cestina
Русский