Giugno 2019
Volume 34 Numero 6
Il presente articolo è stato tradotto automaticamente.
[Artificially Intelligent]
Esplorazione di dati con R
Dal Frank La La | Giugno 2019 | Ottenere il codice
Dopo la prima colonna Artificially Intelligent, tutti gli esempi di codice che ho fornito sono stati in Python. Ciò avviene perché Regno attualmente Python come linguaggio di data science e intelligenza artificiale. Ma non è da solo, linguaggi come R e Scala, tenere premuto un luogo di diffusione in questo campo. Per gli sviluppatori si chiedono perché è necessario imparare a utilizzare un altro linguaggio di programmazione, R ha aspetti esclusivi che ho non riscontrato in un' posizione in una carriera di successo che ha occupate Java, C#, Perl, Python e Visual Basic. Con R da una lingua che i lettori abbiano che possono verificarsi nel campo di analisi scientifica dei dati, ritengo che vale la pena esplorare qui.
Lo stesso R è un'implementazione del linguaggio di programmazione S, che è stato creato nel 1970s per l'elaborazione statistica Bell Labs. S è stato progettato per offrire un'esperienza interattiva per sviluppatori che al momento lavorato con Fortran per l'elaborazione statistica. Mentre si scrivono ambienti di programmazione interattivi concesso oggi stesso, è stato rivoluzionario al momento.
R è stato concepito nel 1992 Ross Ihaka e Robert Gentleman all'università di Auckland, Nuova Zelanda e il relativo nome deriva dal primo iniziale dei suoi creatori, durante l'esecuzione anche sul nome di S. la versione 1.0.0 di R è stato rilasciato nel 2000 e poiché è stato adoptio wide n in grazie ai reparti research in parte a una vasta gamma di algoritmi statistici predefiniti. È anche estendibile con facilità tramite le funzioni e i pacchetti di estensione.
Una community di sviluppatori solida è emerso intorno a R, con il repository più diffuso per i pacchetti R in corso di completo rete (sistema CRAN R Archive). CRAN contiene diversi pacchetti che riguardano nulla dal Bayesian attribuzione stima all'elaborazione spettrali per ad alta risoluzione flusso infusione massa ad atomico. È in linea in un elenco completo dei pacchetti R disponibili in CRAN bit.ly/2DGjuEJ. Basti dire che R e CRAN offrono strumenti affidabili per qualsiasi progetto di ricerca scientifica o l'analisi scientifica dei dati.
Introduzione a R
Probabilmente il modo più rapido per eseguire codice R è tramite un Notebook di Jupyter sul servizio Notebook di Azure. Per informazioni dettagliate su notebook di Jupyter, fare riferimento a un articolo di febbraio 2018 sull'argomento all'indirizzo msdn.com/magazine/mt829269. Tuttavia, questa volta assicurarsi di scegliere R come lingua quando si crea un nuovo notebook. Il logo di R deve essere visualizzato in alto a destra della finestra del browser. In una cella vuota, immettere il codice seguente ed eseguirlo:
# My first R code
print("hello world")
x <- 3.14
y = 1.21
x
y
L'output dovrebbe tradizionale saluto "hello world", nonché i valori di 3.14 e pari a 1,21. Ciò non deve provenire come romanzo o univoci per gli sviluppatori di software. Si noti che l'operatore di assegnazione può essere anche "<-" e non solo la più comunemente utilizzate segno di uguale. Essi sono sintatticamente equivalenti. Prendere anche nota che il carattere # introduce un commento ed è applicabile per il resto della riga.
I vettori sono matrici unidimensionale che possono contenere dati numerici, dati di tipo carattere o dati logici. Vengono create con la funzione c. C è l'acronimo di "combinazione". Immettere le informazioni seguenti in una nuova cella ed eseguirlo:
num_vec <- c(1,2,3.14) # numeric vector
char_vec <- c("blog","podcast","livestream") # character vector
bool_vec <- c(TRUE,TRUE,FALSE) #logical vector
#print out values
num_vec
char_vec
bool_vec
I valori visualizzati devono corrispondere i valori impostati nel codice. A questo punto vi starete chiedendo se vettori possono contenere tipi misti. Immettere il codice seguente in una nuova cella:
mix_vec <- c(1,"lorem ispum",FALSE)
mix_vec
Mentre viene eseguito il codice, sharp-eyed lettori noteranno le virgolette singole attorno a ogni elemento nel vettore. Ciò indica che i valori sono stati convertiti in valori di tipo carattere. R svolge la funzione typeof per controllare il tipo di ogni variabile specificata. Immettere il codice seguente per esaminare i vettori già creati:
typeof(num_vec)
typeof(char_vec)
typeof(bool_vec)
typeof(mix_vec)
Un'altra funzione utile conoscere è ls, che consente di visualizzare tutti gli oggetti nell'ambiente di lavoro corrente. Immettere "sImpossibile" in una nuova cella, eseguirlo e osservare che l'output contiene i quattro vettori appena definiti. h, con la x e y variabili definite nella prima cella.
Utilizzo dei dati
Il modo migliore per sperimentare la vera potenza e l'eleganza tipiche del linguaggio R è usandola per esplorare e modificare i dati. R rende più facile caricare i set di dati e ottenere rapidamente la comprensione delle dimensioni, struttura e proprietà statistiche. Per alcuni esempi successivi, si utilizzerà un set di dati che è quasi e Gentile a me: le statistiche di base nella mia attività di blogging. È stato eseguito e gestito un blog di tecnologia a partire dal 2004, hanno mantenuto le statistiche di base su frequenza con cui ho pubblicato ogni mese. Inoltre, è stato aggiunto il numero di giorni nel mese e il post medio per ogni valore del giorno (PPD). PPD è il numero di inserimenti in un determinato mese diviso per il numero di giorni nel mese in corso. Ho ho inserito il file CSV nella libreria del progetto in Azure Notebook Service al bit.ly/2V76d2G.
Immettere il codice seguente in una nuova cella per caricare i dati in un frame di dati R, una struttura di dati tabulari con righe e colonne per le variabili per le osservazioni e visualizzare i primi sei e le ultime tre record con head e tail rispettivamente per le funzioni, , come illustrato di seguito:
postData <- read.csv(file="franksworldposts.csv", header=TRUE, sep=",")
head(postData)
tail(postData, 3)
Utilizzo della funzione str, posso visualizzare i tipi di dati e struttura di base del frame di dati. Immettere il codice seguente in una nuova cella:
str(postData)
L'output dovrebbe indicare il frame di dati dispone di 183 osservazioni, o le righe che è costituito da quattro variabili o colonne. Il post e Days.in.Month variabili sono numeri interi, mentre il PPD è un tipo numerico. La variabile di mese è un fattore con livelli di 183, in cui fattore è un tipo di dati che corrisponde a variabili categoriche nelle statistiche. Fattori sono l'equivalente funzionale categoriche in Python Pandas e possono essere stringhe o numeri interi. Sono ideali per le variabili con un numero limitato di valori univoci, o, in termini di R, i livelli. In questo frame di dati, il campo Month rappresenta un mese tra febbraio 2004 e aprile 2019. Come le date non si ripetono, non sono presenti valori categorici duplicati.
Ora che i miei dati viene caricati, posso ordinare ed eseguire query per esaminarlo ulteriormente. Forse è possibile raccogliere alcune informazioni dettagliate. Ad esempio, se si desidera visualizzare i primi 10 mesi ero più produttivo sul mio blog, potrei eseguire un ordinamento decrescente sulla colonna post. A tale scopo, immettere il codice seguente in una nuova cella ed eseguirlo:
sortedPostData <- postData[order(-postData$Posts),]
head(sortedPostData, 10)
Tutti i mesi più attivi superiore a 10 sono stati entro gli ultimi tre anni. Per esplorare ulteriormente il set di dati, è possibile eseguire un'operazione di filtraggio per determinare quali mesi hanno avuto 100 o più post. In R, la funzione subset esegue questa operazione. Immettere il codice seguente per applicare il filtro e assegnare l'output a un nuovo DataFrame chiamato over100, come illustrato di seguito:
over100 <- subset(postData, subset = Posts >= 100)
over100
I risultati simili all'output precedente dei primi 10. Per controllare il conteggio delle righe, utilizzare la funzione nrow per contare il numero di righe nel frame di dati, simile al seguente:
nrow(over100)
L'output indica che non esistono 11 righe in cui sono presenti 100 o più post di blog in un determinato mese. Con 100 post, maggio 2005 mancanti solo i primi 10 più attivi mesi che rientrano nelle dall'11 sul posto. La cancellazione della soglia di 100-post per ogni mese, non era un'attività cardine che si potrebbe raggiunge nuovamente per 11 anni. È disponibile un modello di blog che iniziano con intensità solo in modo che applica dissolvenza a e quindi riprenderle? È possibile esaminare ulteriormente i dati.
A questo punto sarebbe un buon momento per scoprire come visualizzare le singole righe e colonne in un frame di dati. Per visualizzare la prima riga nel frame di dati, ad esempio, immettere il codice seguente per visualizzare il contenuto dell'intera riga:
postData[1,]
Si noti che l'indice per il frame di dati inizia da 1 e diverso da 0, come la maggior parte degli altri linguaggi di programmazione. Per visualizzare solo il campo post per la prima riga, immettere il codice seguente:
postData[1,2]
Per visualizzare tutti i valori nel campo post, utilizzare la riga di codice seguente:
postData[,2]
In alternativa, è possibile usare anche la sintassi seguente per visualizzare le colonne in base al nome. Immettere la riga di codice seguente e confermare che l'output corrisponde all'output dell'oggetto prima riga:
postData$Posts
Poiché R ha le sue radici durante l'elaborazione statistica, esistono molti compilati nelle funzioni per visualizzare la forma di base e proprietà dei dati. Usare il codice seguente per ottenere una migliore comprensione dei dati nella colonna Post:
mean(postData$Posts)
max(postData$Posts)
min(postData$Posts)
summary(postData$Posts)
A questo punto, confrontare questo alla colonna PPD, come illustrato di seguito:
mean(postData$PPD)
max(postData$PPD)
min(postData$PPD)
summary(postData$PPD)
Dai dati noteremo che il numero di posti variare da uno per ogni mese fino alla 225 nel corso del 15 anni. Cosa accade se si desidera esplorare solo il primo anno? Immettere il codice seguente per visualizzare solo i record per il primo anno di blogging, insieme ai riepiloghi statistici per i campi di Post e PPD:
postData[1:12,]
summary(postData[1:12,2]) # Posts
summary(postData[1:12,4]) # PPD
Mentre i numeri di qui una storia, molto spesso un grafico verrà visualizzate ulteriori informazioni su tendenze e modelli. Fortunatamente, R ha grafico avanzato tracciato funzionalità incorporate. Esaminiamo questi.
La visualizzazione dei dati
Creazione di grafici in R, è molto semplice e può essere eseguita con una singola riga di codice. Iniziamo con il numero di post e i valori PPD per il primo anno. Ecco il codice per eseguire questa operazione:
plot(postData[1:12,2], xlab="Month Index", ylab="Posts",
main="Posts in the 1st Year")
plot(postData[1:12,4], xlab="Month Index", ylab="PPD",
main="PPD in the 1st Year")
L'output dovrebbe essere simile figura 1.
Figura 1 il tracciamento di inserimenti e le colonne PPD
Per il primo anno di blogging, illustrato nel grafico che pubblichino attività costantemente le dimensioni sono aumentate del primo anno con una curva di crescita steep tra i mesi terzi e sesta. Dopo una flessione a fine estate, 2004 completato strong. Inoltre, i grafici rivelano che vi sia una correlazione elevata tra il numero di inserimenti in un mese e il numero di post al giorno. Sebbene questo possa essere intuitivo, è interessante verrà visualizzato nel formato grafico.
A questo punto, vorrei visualizzare che un grafico dei blog post nell'intero intervallo di 15 anni e vedere se emerge un modello in un periodo più lungo del tempo. Immettere il codice seguente per l'intero intervallo di tempo del grafico:
plot(postData[,2], xlab="Month Index", ylab="Posts",
main="All Posts")
I risultati, illustrati nella figura 2, vengono visualizzati una chiara tendenza, se non è un motivo ben definito. Attività di blogging iniziato piuttosto forte ma rifiutati costantemente, prelievo nuovamente circa 30 mesi fa. La tendenza di ritardo è decisamente verso l'alto. È inoltre disponibile l'outlier significativo uno.
Figura 2 post oltre 15 anni
Matrice di correlazione
In precedenza, notato una correlazione tra gli invii e PPD colonne. R dispone di una funzione predefinita per visualizzare una matrice di correlazione, ovvero una tabella di coefficienti di correlazione tra le variabili di visualizzazione. Ogni cella della tabella viene illustrata la correlazione tra due variabili.
Una matrice di correlazione vengono riepilogati i dati e rapidamente rivela le relazioni tra le variabili. I valori più vicini a 1 hanno una correlazione elevata, mentre quelli più vicini a 0 hanno correlazione bassa. I valori negativi indicano una correlazione negativa. Per visualizzare la matrice di correlazioni per postData frame di dati, è necessario innanzitutto per isolare i campi numerici nel proprio frame di dati e quindi chiamare la funzione cor. Immettere il codice seguente in una nuova cella ed eseguirlo:
postsCor <- postData[, c(2, 3 ,4)]
cor(postsCor)
L'output rivela una correlazione quasi perfetta tra gli invii e PPD, mentre Days.In.Month ha una correlazione leggermente negativa a PPD.
Conclusioni
Mentre la sintassi e l'approccio di R possono variare dai linguaggi di programmazione tradizionali, trovarlo una soluzione elegante per la gestione dei dati e l'elaborazione matematica. Per gli ingegneri software gravi sulla compilazione di una carriera nell'analisi scientifica dei dati, R è un aspetto importante per lo sviluppo.
In questo articolo, esplorato alcuni concetti fondamentali del linguaggio di programmazione R. Ho illustrato come usare le funzioni predefinite per caricare ed esplorare i dati all'interno di frame di dati, per ottenere informazioni dettagliate ottenute tramite le statistiche e tracciare i grafici. In effetti, tutto ciò che in questo articolo è stata scritta in ciò che potrebbe essere indicato come "base" R, poiché non dipende dal tutti i pacchetti di terze parti. Tuttavia, alcuni utenti R preferiscono la suite di "tidyverse" dei pacchetti, che usa uno stile diverso. Che verrà esaminato nei prossimi articoli.
Frank La Vignelavora in Microsoft come un professionista di soluzioni di tecnologia di intelligenza artificiale dove aiuta le aziende ottenere migliori risultati per usufruire al meglio i propri dati con analitica e intelligenza artificiale. Ha inoltre CO-host il DataDriven podcast. Partecipa al blog regolarmente FranksWorld.com ed è possibile vederne lui sul suo canale YouTube, "Di Frank mondo TV" (FranksWorld.TV).
Grazie al seguente esperto tecnico per la revisione dell'articolo: Andy Leonard, David Smith
David Smith è un Cloud Advocate per Microsoft, specializzando negli argomenti di intelligenza artificiale e machine learning. Poiché 2009 è stato l'editor del blog Revolutions (blog.revolutionanalytics.com), in cui si scrive regolarmente sulle applicazioni di analisi scientifica dei dati con un'attenzione particolare in R linguaggio di programmazione. È anche membro fondatori di R Consortium. Segui David su Twitter come @revodavid.