Preelaborazione dei dati in R: Ultimate Tutorial [2022]
Pubblicato: 2021-03-01Nel seguente tutorial sulla preelaborazione dei dati in R, imparerai i fondamenti su come eseguire la preelaborazione dei dati. Questo tutorial richiede che tu abbia familiarità con le basi di R e la programmazione:
Sommario
1. Passaggio: trovare e risolvere i problemi
Inizieremo la nostra preelaborazione dei dati nel tutorial R importando prima il set di dati. Dopotutto, non puoi preelaborare i dati se non hai i dati in primo luogo.
Nel nostro caso, i dati vengono archiviati nel file data.csv nella directory di lavoro. È possibile utilizzare il comando setwd ("posizione desiderata") e impostare la directory di lavoro.
Ecco come inizierai il processo:
set di dati <- read.csv ("Data.csv")
Ecco il nostro set di dati:
## | Paese | Età | Stipendio | Acquistato | |
## | 1 | Francia | 44 | 72000 | No |
## | 2 | Spagna | 27 | 48000 | sì |
## | 3 | Germania | 30 | 54000 | No |
## | 4 | Spagna | 38 | 61000 | No |
## | 5 | Germania | 40 | N / A | sì |
## | 6 | Francia | 35 | 58000 | sì |
## | 7 | Spagna | N / A | 52000 | No |
## | 8 | Francia | 48 | 79000 | sì |
## | 9 | Germania | 50 | 83000 | No |
## | 10 | Francia | 37 | 67000 | sì |
Come puoi vedere, ci sono valori mancanti nelle colonne Stipendio ed Età del nostro set di dati. Abbiamo identificato il problema presente nel nostro set di dati, quindi ora possiamo iniziare a risolvere lo stesso.
Nessun altro problema sembra essere presente nel nostro set di dati, quindi dobbiamo solo gestire i valori mancanti. Possiamo risolvere questo problema sostituendo i valori NA con i valori medi delle rispettive colonne. Ecco come:
dataset$Età <- ifelse(is.na(dataset$Età),
ave(dataset$Età, DIVERTIMENTO = funzione(x)
mean(x, na.rm = VERO)),
set di dati$Età)
dataset$Salario <- ifelse(is.na(dataset$Salario),
ave(dataset$Stipendio, DIVERTIMENTO = funzione(x)
mean(x, na.rm = VERO)),
set di dati $ Stipendio)
Nota come abbiamo usato la funzione ave() qui. Prende la media della colonna specifica che hai inserito dove FUN è una funzione di x che calcola la media escludendo i valori NA (na.rm=TRUE).
altro,
prendi tutto ciò che è presente nel set di dati $ Age
Useremo ora la funzione mean():
#definendo x = 1 2 3
x <- 1:3
#introdurre il valore mancante
x[1] <- NA
# media = NA
media(x)
## [1] NA
# media = media escluso il valore NA
media(x, na.rm = T)
## [1] 2.5
Dopo aver identificato e risolto il problema, il nostro set di dati si presenta così:
## | Paese | Età | Stipendio | Acquistato | |
## | 1 | Francia | 44 | 72000,00 | No |
## | 2 | Spagna | 27 | 48000,00 | sì |
## | 3 | Germania | 30 | 54000,00 | No |
## | 4 | Spagna | 38 | 61000.00 | No |
## | 5 | Germania | 40 | 63777.78 | sì |
## | 6 | Francia | 35 | 58000,00 | sì |
## | 7 | Spagna | 38 | 52000.00 | No |
## | 8 | Francia | 48 | 79000,00 | sì |
## | 9 | Germania | 50 | 83000,00 | No |
## | 10 | Francia | 37 | 67000,00 | sì |
Leggi anche: Opportunità di carriera nel linguaggio di programmazione R
2. Passaggio: dati categoriali
I dati categoriali sono dati non numerici che appartengono a categorie particolari. La colonna Paese nel nostro set di dati è costituita da dati categoriali. La funzione read.csv() in R renderebbe tutte le variabili stringa come variabili categoriali. Tuttavia, non possiamo usarlo in tutti i casi.
Ecco come creare variabili specifiche come variabili fattoriali:
set di dati $ Paese = fattore (set di dati $ Paese,
livelli = c('Francia', 'Spagna', 'Germania'),
etichette = c(1, 2, 3))
set di dati $ Acquistato = fattore (set di dati $ Acquistato,
livelli = c('No', 'Sì'),
etichette = c(0, 1))
3. Passaggio: divisione dei dati
Ora, dobbiamo dividere il nostro set di dati in due set di dati separati. Uno per addestrare il nostro modello di machine learning mentre l'altro per testare lo stesso.
Per farlo, installeremo prima il pacchetto caTools (se non disponibile) e lo aggiungeremo alla nostra libreria. Successivamente, useremo la funzione set.seed() per assicurarci che la divisione avvenga in modo casuale. Usa il seguente codice:
libreria(caTools)
set.seme(123)
split = sample.split(dataset$Acquistato,SplitRatio = 0.8)
training_set = subset(dataset,split == VERO)
set_test = sottoinsieme(set di dati, diviso == FALSO)
Devi aver notato che abbiamo mantenuto il rapporto di divisione su 80:20. Questo perché è il rapporto di divisione più convenzionale per set di allenamento e set di prova. Il nostro metodo sample.split() ha preso la colonna e ha creato un array numerico con valori true e false randomizzati in base al rapporto di divisione.
4. Passaggio: ridimensionamento o sovraadattamento delle funzioni
Il ridimensionamento delle funzionalità è necessario quando funzionalità diverse nel set di dati hanno intervalli diversi. Nel nostro caso, le colonne Età e Stipendio hanno intervalli diversi, che possono causare problemi durante l'addestramento del nostro modello ML.
Quando si ha una caratteristica con una portata significativamente più alta dell'altra caratteristica, la distanza euclidea aumenta considerevolmente, facendo sì che il modello dia risultati errati.
Nota che la maggior parte delle librerie in R risolve automaticamente questo problema, ma è importante sapere come risolverlo. Fare quanto segue:
set_allenamento[,2:3] = scala(set_allenamento[,2:3])
set_test[,2:3] = scala(set_test[,2:3])
Risolverebbe il problema e le funzionalità del set di formazione avrebbero gli stessi intervalli, riducendo al minimo le possibilità di errori durante le implementazioni di machine learning.
Ottieni la certificazione di data science dalle migliori università del mondo. Impara i programmi Executive PG, Advanced Certificate Program o Master per accelerare la tua carriera.
Conclusione
Ci auguriamo che tu abbia trovato utile la nostra preelaborazione dei dati nel tutorial R. Sarebbe meglio capire il tutorial prima di provare a testarlo tu stesso. Comprendere i concetti è molto più importante che usarli.
Cosa ne pensi della nostra preelaborazione dei dati nel tutorial R? Condividili nei commenti qui sotto.
Se sei curioso di conoscere R, scienza dei dati, dai un'occhiata al nostro Executive PG in Data Science, creato per i professionisti che lavorano e offre oltre 10 casi di studio e progetti, workshop pratici pratici, tutoraggio con esperti del settore, 1-on- 1 con mentori del settore, oltre 400 ore di apprendimento e assistenza al lavoro con le migliori aziende.
In Python, il polimorfismo si riferisce a un nome di funzione generico che può essere utilizzato per una varietà di scopi. Questa idea è comunemente usata nel concetto di programmazione Python orientato agli oggetti. La tipizzazione dell'anatra è una nozione di polimorfismo. La frase digitazione anatra deriva da un proverbio che afferma che tutto ciò che cammina, ciarlata e nuota come un'anatra viene soprannominato anatra, indipendentemente da cosa sia. In parole povere, indica che se qualcosa abbina il suo comportamento a qualcos'altro, sarà considerato un membro di quella categoria. Quando un metodo con lo stesso nome e argomenti viene utilizzato sia in una classe derivata che in una classe base o super, si dice che il metodo della classe derivata sovrascrive il metodo fornito nella classe base. Quando viene chiamato il metodo sottoposto a override, viene sempre richiamato il metodo della classe derivata. Il metodo utilizzato nella classe base è ora nascosto.Quanti tipi di polimorfismo ci sono in Python?
Il polimorfismo è implementato in Python per diversi scopi, come Duck Typing, Operator overloading, Method overloading e Method override, così come in altri linguaggi di programmazione come Java e C++. Il sovraccarico e l'override sono i due metodi principali per ottenere il polimorfismo.
Una classe con molti metodi con lo stesso nome ma argomenti distinti è nota come sovraccarico del metodo. Sebbene l'overloading dei metodi non sia supportato per impostazione predefinita in Python, esistono numerose tecniche per farlo. Che cosa sta scrivendo Duck?
Che cos'è il sovraccarico e l'override?
Python, d'altra parte, non fornisce l'overloading del metodo in base al tipo, alla quantità o all'ordine dei parametri del metodo. L'overloading del metodo è un approccio Python per definire un metodo in modo tale che possa essere chiamato in più modi. A differenza di altri linguaggi di programmazione, questo è unico.