Data science con Data Science Virtual Machine per Ubuntu in Azure

Questa procedura dettagliata descrive come completare diverse attività comuni di data science con la DSVM (Data Science Virtual Machine) Ubuntu. La DSVM Ubuntu è un'immagine di macchina virtuale disponibile in Azure, con una raccolta di strumenti preinstallata comunemente usata per l'analisi dei dati e l'apprendimento automatico. La risorsa Provisioning della macchina virtuale ubuntu per l'analisi scientifica dei dati suddivide i componenti software chiave. L'immagine DSVM semplifica l'introduzione all'analisi scientifica dei dati in pochi minuti, evitando la necessità di installare e configurare singolarmente ognuno degli strumenti. Se necessario, è possibile aumentare facilmente le prestazioni della DSVM e arrestarla quando non è in uso. La risorsa DSVM è sia flessibile che conveniente.

Questa procedura dettagliata illustra il set di dati spambase. Spambase è un set di messaggi di posta elettronica contrassegnati come posta indesiderata o non indesiderata. Spambase contiene anche alcune statistiche sul contenuto della posta elettronica. Le statistiche verranno illustrate più avanti nella procedura dettagliata.

Prerequisiti

Prima di poter usare una DSVM Linux, è necessario soddisfare questi prerequisiti:

Scaricare il set di dati spambase

Il set di dati spambase è un set di dati abbastanza piccolo contenente 4.601 esempi. Le dimensioni pratiche e gestibili di questa risorsa semplificano la visualizzazione di alcune delle funzionalità principali della DSVM a causa dei modesti requisiti delle risorse.

Nota

Questa procedura dettagliata è stata creata usando una D2 D2 D2-size Linux DSVM. È possibile usare una DSVM di questa dimensione per completare le procedure illustrate in questa procedura dettagliata.

Per più spazio di archiviazione, è possibile creare più dischi e collegarli alla DSVM. I dischi usano l'archiviazione di Azure persistente, quindi i dati vengono mantenuti anche se il server viene sottoposto a reprovisioning a causa del ridimensionamento o di un arresto. Per aggiungere un disco e collegarlo alla DSVM, seguire la procedura illustrata in Aggiungere un disco a una VM Linux. La procedura per aggiungere un disco usa l'interfaccia della riga di comando di Azure, già installata nella DSVM. È possibile completare la procedura interamente dalla DSVM stessa. Un'altra opzione per aumentare lo spazio di archiviazione può essere usata File di Azure.

Per scaricare i dati, aprire una finestra del terminale e quindi eseguire questo comando:

wget --no-check-certificate https://archive.ics.uci.edu/ml/machine-learning-databases/spambase/spambase.data

Il file scaricato non contiene una riga di intestazione. Viene ora creato un altro file che contiene un'intestazione. Eseguire questo comando per creare un file con le intestazioni appropriate:

echo 'word_freq_make, word_freq_address, word_freq_all, word_freq_3d,word_freq_our, word_freq_over, word_freq_remove, word_freq_internet,word_freq_order, word_freq_mail, word_freq_receive, word_freq_will,word_freq_people, word_freq_report, word_freq_addresses, word_freq_free,word_freq_business, word_freq_email, word_freq_you, word_freq_credit,word_freq_your, word_freq_font, word_freq_000, word_freq_money,word_freq_hp, word_freq_hpl, word_freq_george, word_freq_650, word_freq_lab,word_freq_labs, word_freq_telnet, word_freq_857, word_freq_data,word_freq_415, word_freq_85, word_freq_technology, word_freq_1999,word_freq_parts, word_freq_pm, word_freq_direct, word_freq_cs, word_freq_meeting,word_freq_original, word_freq_project, word_freq_re, word_freq_edu,word_freq_table, word_freq_conference, char_freq_semicolon, char_freq_leftParen,char_freq_leftBracket, char_freq_exclamation, char_freq_dollar, char_freq_pound, capital_run_length_average,capital_run_length_longest, capital_run_length_total, spam' > headers

Concatenare quindi i due file:

cat spambase.data >> headers
mv headers spambaseHeaders.data

Il set di dati include diversi tipi di statistiche per ogni messaggio di posta elettronica:

  • Colonne come word_freq_WORD indicano la percentuale di parole nel messaggio di posta elettronica che corrispondono a WORD. Ad esempio, se word_freq_make è 1, make era il 1% di tutte le parole nel messaggio di posta elettronica.
  • Le colonne come char_freq_CHAR indicano la percentuale di tutti i caratteri nel messaggio di posta elettronica char.
  • capital_run_length_longest è la lunghezza massima di una sequenza di lettere maiuscole.
  • capital_run_length_average è la lunghezza media di tutte le sequenze di lettere maiuscole.
  • capital_run_length_total è la lunghezza totale di tutte le sequenze di lettere maiuscole.
  • spam indica se il messaggio di posta elettronica è stato considerato posta indesiderata o meno: 1 = posta indesiderata, 0 = posta non indesiderata.

Esplorare il set di dati tramite R Open

Si esamineranno i dati e si userà R per eseguire alcune operazioni di Machine Learning di base. La DSVM viene fornita con CRAN R preinstallato.

Per ottenere copie degli esempi di codice usati in questa procedura dettagliata, usare git per clonare il repository Azure-Machine-Learning-Data-Science. che è preinstallato nella DSVM. Dalla riga di comando di Git, eseguire:

git clone https://github.com/Azure/Azure-MachineLearning-DataScience.git

Aprire una finestra del terminale e avviare una nuova sessione di R nella console interattiva di R. Per importare i dati e configurare l'ambiente, eseguire:

data <- read.csv("spambaseHeaders.data")
set.seed(123)

Questo esempio di codice mostra le statistiche di riepilogo su ogni colonna:

summary(data)

Per una visualizzazione diversa dei dati, usare:

str(data)

Questa vista mostra il tipo di ogni variabile e i primi valori nel set di dati.

La colonna spam è stata letta come Integer, ma in realtà si tratta di un fattore o una variabile categorica. Per impostarne il tipo, usare:

data$spam <- as.factor(data$spam)

Per un'analisi esplorativa, usare il pacchetto ggplot2 , una libreria di gragrafi più diffusa per R. Il pacchetto ggplot2 è preinstallato nella DSVM. In base ai dati di riepilogo visualizzati in precedenza, sono disponibili statistiche di riepilogo sulla frequenza del carattere punto esclamativo. Per tracciare queste frequenze, eseguire questi comandi:

library(ggplot2)
ggplot(data) + geom_histogram(aes(x=char_freq_exclamation), binwidth=0.25)

Poiché la barra zero sfasa il tracciato, eliminiamolo:

email_with_exclamation = data[data$char_freq_exclamation > 0, ]
ggplot(email_with_exclamation) + geom_histogram(aes(x=char_freq_exclamation), binwidth=0.25)

Densità nontriviale superiore a 1 che sembra interessante. Per esaminare solo quei dati, eseguire:

ggplot(data[data$char_freq_exclamation > 1, ]) + geom_histogram(aes(x=char_freq_exclamation), binwidth=0.25)

Per dividere quindi i dati in posta indesiderata e non indesiderata, eseguire:

ggplot(data[data$char_freq_exclamation > 1, ], aes(x=char_freq_exclamation)) +
geom_density(lty=3) +
geom_density(aes(fill=spam, colour=spam), alpha=0.55) +
xlab("spam") +
ggtitle("Distribution of spam \nby frequency of !") +
labs(fill="spam", y="Density")

Questi esempi consentono di creare tracciati simili ed esplorare i dati nelle altre colonne.

Eseguire il training e il test di un modello di Machine Learning

Verrà ora eseguito il training di alcuni modelli di Machine Learning per identificare i messaggi di posta elettronica nel set di dati che contengono posta indesiderata o ham. In questa sezione si eseguirà il training di un modello di albero delle decisioni e di un modello di foresta casuale. Verrà quindi eseguito il test dell'accuratezza delle stime.

Nota

Il pacchetto rpart (Recursive Partitioning and Regression Trees, partizionamento ricorsivo e alberi di regressione) usato nel codice seguente è già installato nella DSVM.

Dividere prima di tutto il set di dati in set di training e set di test:

rnd <- runif(dim(data)[1])
trainSet = subset(data, rnd <= 0.7)
testSet = subset(data, rnd > 0.7)

Creare quindi un albero delle decisioni per classificare i messaggi di posta elettronica:

require(rpart)
model.rpart <- rpart(spam ~ ., method = "class", data = trainSet)
plot(model.rpart)
text(model.rpart)

Il risultato è il seguente:

Diagramma che mostra l'albero delle decisioni creato.

Usare questo esempio di codice per determinare le prestazioni del set di training:

trainSetPred <- predict(model.rpart, newdata = trainSet, type = "class")
t <- table(`Actual Class` = trainSet$spam, `Predicted Class` = trainSetPred)
accuracy <- sum(diag(t))/sum(t)
accuracy

Per determinare le prestazioni del set di test, eseguire questo codice:

testSetPred <- predict(model.rpart, newdata = testSet, type = "class")
t <- table(`Actual Class` = testSet$spam, `Predicted Class` = testSetPred)
accuracy <- sum(diag(t))/sum(t)
accuracy

Viene ora esaminato un modello di foresta casuale. Una foresta casuale esegue il training di più alberi delle decisioni. Restituisce una classe che rappresenta il valore della modalità delle classificazioni da tutti i singoli alberi delle decisioni. Offrono un approccio di Machine Learning più efficace perché compensano la tendenza all'overfitting del set di dati di training da parte del modello di albero delle decisioni.

require(randomForest)
trainVars <- setdiff(colnames(data), 'spam')
model.rf <- randomForest(x=trainSet[, trainVars], y=trainSet$spam)

trainSetPred <- predict(model.rf, newdata = trainSet[, trainVars], type = "class")
table(`Actual Class` = trainSet$spam, `Predicted Class` = trainSetPred)

testSetPred <- predict(model.rf, newdata = testSet[, trainVars], type = "class")
t <- table(`Actual Class` = testSet$spam, `Predicted Class` = testSetPred)
accuracy <- sum(diag(t))/sum(t)
accuracy

Esercitazioni e procedure dettagliate di Deep Learning

Oltre a esempi basati su framework, viene fornito anche un set di procedure dettagliate complete. Queste procedure dettagliate consentono di avviare rapidamente lo sviluppo di applicazioni di Deep Learning in domini di immagine, comprensione del linguaggio del testo e così via.

  • Esecuzione di reti neurali in diversi framework: procedura dettagliata completa che illustra come eseguire la migrazione del codice da un framework a un altro. Illustra anche come confrontare le prestazioni del modello e del runtime tra framework.

  • Guida pratica per la creazione di una soluzione end-to-end per rilevare i prodotti all'interno delle immagini: la tecnica di rilevamento delle immagini può individuare e classificare gli oggetti all'interno delle immagini. La tecnologia può offrire enormi ricompense in molti domini aziendali reali. Ad esempio, i rivenditori possono usare questa tecnica per determinare il prodotto che un cliente ha prelevato dallo scaffale. Queste informazioni a loro volta consentono ai negozi di gestire l'inventario dei prodotti.

  • Deep learning per audio: questa esercitazione illustra come eseguire il training di un modello di deep learning per il rilevamento di eventi audio nel set di dati Urban Sounds. Nell'esercitazione viene fornita una panoramica su come usare i dati audio.

  • Classificazione dei documenti di testo: questa procedura dettagliata illustra come compilare ed eseguire il training di due diverse architetture di rete neurale: la rete di attenzione gerarchica e la memoria a breve termine (LSTM). Per classificare i documenti di testo, queste reti neurali usano l'API Keras per l'apprendimento avanzato. Keras è un front-end a tre dei più popolari framework di apprendimento avanzato: Microsoft Cognitive Toolkit, TensorFlow e Theano.

Altri strumenti

Le sezioni rimanenti illustrano come usare alcuni degli strumenti preinstallati nella DSVM Linux. Questi strumenti vengono esaminati:

  • XGBoost
  • Python
  • JupyterHub
  • Rattle
  • PostgreSQL e SQuirrel SQL
  • Azure Synapse Analytics (in precedenza SQL DW)

XGBoost

XGBoost consente un'implementazione di albero con boosting rapida e accurata.

require(xgboost)
data <- read.csv("spambaseHeaders.data")
set.seed(123)

rnd <- runif(dim(data)[1])
trainSet = subset(data, rnd <= 0.7)
testSet = subset(data, rnd > 0.7)

bst <- xgboost(data = data.matrix(trainSet[,0:57]), label = trainSet$spam, nthread = 2, nrounds = 2, objective = "binary:logistic")

pred <- predict(bst, data.matrix(testSet[, 0:57]))
accuracy <- 1.0 - mean(as.numeric(pred > 0.5) != testSet$spam)
print(paste("test accuracy = ", accuracy))

Questo strumento consente anche di eseguire chiamate da Python o da una riga di comando.

Python

Per lo sviluppo python, le distribuzioni di Anaconda Python 3.5 e 2.7 sono preinstallate nella DSVM.

Nota

La distribuzione Anaconda include Conda. È possibile usare Conda per creare ambienti Python personalizzati con versioni o pacchetti diversi installati all'interno di essi.

Leggere alcuni dei set di dati spambase e classificare i messaggi di posta elettronica con macchine vettoriali di supporto in Scikit-learn:

import pandas
from sklearn import svm
data = pandas.read_csv("spambaseHeaders.data", sep = ',\s*')
X = data.ix[:, 0:57]
y = data.ix[:, 57]
clf = svm.SVC()
clf.fit(X, y)

Per eseguire previsioni, usare:

clf.predict(X.ix[0:20, :])

Per illustrare come pubblicare un endpoint di Azure Machine Learning, verrà creato un modello più semplice. Vengono usate le tre variabili usate durante la pubblicazione del modello R in precedenza:

X = data[["char_freq_dollar", "word_freq_remove", "word_freq_hp"]]
y = data.ix[:, 57]
clf = svm.SVC()
clf.fit(X, y)

JupyterHub

La distribuzione di Anaconda nella DSVM include jupyter Notebook. Questa risorsa è un ambiente multipiattaforma per la condivisione di codice e analisi Python, R o Julia. Jupyter Notebook è accessibile tramite JupyterHub. Per eseguire l'accesso, usare il nome utente e la password Linux locali all'indirizzo https://<Nome DNS o indirizzo IP della DSVM>:8000/. Tutti i file di configurazione di JupyterHub sono disponibili in /etc/jupyterhub.

Nota

Per usare il Gestione pacchetti Python (tramite il pip comando ) da un notebook di Jupyter che si trova nel kernel corrente, usare questo comando nella cella di codice:

 import sys
 ! {sys.executable} -m pip install numpy -y

Per usare il programma di installazione di Conda (tramite il conda comando ) da un notebook di Jupyter che si trova nel kernel corrente, usare questo comando in una cella di codice:

 import sys
 ! {sys.prefix}/bin/conda install --yes --prefix {sys.prefix} numpy

Nella DSVM sono già installati diversi notebook di esempio:

Nota

Il linguaggio Julia è disponibile anche dalla riga di comando nella DSVM per Linux.

Rattle

È possibile usare lo strumento Rttle (RAnalytical T ool To Learn Easily) grafico R per il data mining. È dotato di un'interfaccia intuitiva che consente di caricare, esplorare e trasformare i dati e di creare e valutare i modelli. Rattle: A Data Mining GUI for R (Rattle: un'interfaccia utente grafica di data mining per R) fornisce una procedura dettagliata di dimostrazione delle funzionalità di Rattle.

Eseguire questi comandi per installare e avviare Rattle:

if(!require("rattle")) install.packages("rattle")
require(rattle)
rattle()

Nota

Non è necessario installare Rattle nella DSVM. Potrebbe essere richiesto tuttavia di installare pacchetti aggiuntivi quando si apre Rattle.

Rattle usa un'interfaccia basata su schede. La maggior parte delle schede corrisponde ai passaggi del Processo Team Data Science, come il caricamento o l'esplorazione dei dati. Il processo di analisi scientifica dei dati va da sinistra a destra nelle schede, L'ultima scheda contiene un log dei comandi R eseguiti da Rattle.

Per caricare e configurare il set di dati:

  1. Per caricare il file, selezionare la scheda Dati
  2. Scegliere il selettore accanto a Filename e quindi selezionare spambaseHeaders.data
  3. Per caricare il file, Selezionare Esegui. Verrà visualizzato un riepilogo di ogni colonna, incluso il tipo di dati identificato, un input, una destinazione o un altro tipo di variabile e il numero di valori univoci
  4. Rattle ha identificato correttamente la colonna spam come destinazione. Selezionare la colonna posta indesiderata e quindi impostare Tipo di dati di destinazione su Categorico

Per esplorare i dati:

  1. Selezionare la scheda Esplora
  2. Per visualizzare informazioni sui tipi di variabili e alcune statistiche di riepilogo, selezionare Riepilogo>esecuzione.
  3. Per visualizzare altri tipi di statistiche sulle singole variabili, selezionare altre opzioni, ad esempio Describe (Descrizione) o Basics (Informazioni di base).

È anche possibile usare la scheda Explore (Esplora) per generare tracciati dettagliati. Per tracciare un istogramma dei dati:

  1. Selezionare Distribuzioni
  2. Per word_freq_remove e word_freq_you selezionare Istogramma
  3. Seleziona Execute. Entrambi i tracciati di densità dovrebbero essere visualizzati in una singola finestra del grafico, in cui la parola che appare chiaramente molto più frequentemente nei messaggi di posta elettronica, rispetto alla rimozione

Anche i tracciati di correlazione sono interessanti. Per creare un tracciato:

  1. Per Tipo selezionare Correlazione
  2. Selezionare Esegui
  3. Rattle avvisa l'utente che è consigliabile usare un massimo di 40 variabili. Selezionare per visualizzare il tracciato

Ci sono alcune correlazioni interessanti che si presentano. Ad esempio, la tecnologia è strettamente correlata a HP e lab. È inoltre strettamente correlato a 650 perché il codice di area dei donatori del set di dati è 650.

I valori numerici per le correlazioni tra le parole sono disponibili nella finestra Explore (Esplora). È interessante notare, ad esempio, che la parola technology è correlata negativamente a your e money.

Rattle può trasformare il set di dati per gestire alcuni problemi comuni. Ad esempio, può ridimensionare le funzionalità, attribuire valori mancanti, gestire gli outlier e rimuovere variabili o osservazioni con dati mancanti. Rattle può anche identificare le regole di associazione tra le osservazioni e le variabili. Questa procedura dettagliata introduttiva non tratta queste schede.

Rattle può anche gestire analisi cluster. Escludere ora alcune funzionalità per migliorare la leggibilità dell'output. Nella scheda Dati selezionare Ignora accanto a ognuna delle variabili, ad eccezione di questi 10 elementi:

  • word_freq_hp
  • word_freq_technology
  • word_freq_george
  • word_freq_remove
  • word_freq_your
  • word_freq_dollar
  • word_freq_money
  • capital_run_length_longest
  • word_freq_business
  • posta indesiderata

Tornare alla scheda Cluster. Selezionare KMeans, quindi impostare Number of clusters (Numero di cluster) su 4. Seleziona Execute. La finestra di output mostra i risultati. Un cluster ha frequenze elevate di george e hp, ed è probabilmente un messaggio di posta elettronica aziendale legittimo.

Per creare un modello di Machine Learning con albero delle decisioni:

  1. Selezionare la scheda Modello
  2. Per Type (Tipo) selezionare Tree (Albero)
  3. Selezionare Esegui per visualizzare l'albero in formato testo nella finestra di output
  4. Fare clic sul pulsante Draw (Disegna) per visualizzarne una versione grafica. L'albero delle decisioni è simile all'albero ottenuto in precedenza con rpart.

Rattle può eseguire diversi metodi di Machine Learning e valutarli rapidamente. Questa è una funzionalità utile. Ecco come eseguire questa operazione:

  1. Per Tipo selezionare Tutti
  2. Selezionare Esegui
  3. Al termine dell'esecuzione di Rattle, è possibile selezionare qualsiasi valore di tipo , ad esempio SVM, e visualizzare i risultati
  4. È anche possibile confrontare le prestazioni dei modelli nel set di convalida con la scheda Valuta . Ad esempio, la selezione Matrice errori mostra la matrice di confusione, l'errore complessivo e l'errore medio della classe per ogni modello nel set di convalida. È anche possibile tracciare le curve ROC, eseguire l'analisi della sensibilità ed eseguire altri tipi di valutazioni del modello

Al termine della compilazione dei modelli, selezionare la scheda Log per visualizzare il codice R eseguito durante la sessione. Per salvarlo, è possibile usare il pulsante Export (Esporta).

Nota

La versione corrente di Rattle contiene un bug. Per modificare lo script o usarlo per ripetere la procedura in un secondo momento, è necessario anteporre un carattere # a Export this log ...* (Esporta questo log) nel testo del log.

PostgreSQL e SQuirrel SQL

La DSVM viene fornita con PostgreSQL installato. PostgreSQL è un database relazionale open source sofisticato. Questa sezione illustra come caricare il set di dati spambase in PostgreSQL e quindi eseguirne una query.

Prima di caricare i dati, è necessario consentire l'autenticazione della password da localhost. Al prompt dei comandi eseguire:

sudo gedit /var/lib/pgsql/data/pg_hba.conf

Nella parte inferiore del file di configurazione diverse righe illustrano in dettaglio le connessioni consentite:

# "local" is only for Unix domain socket connections:
local   all             all                                     trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            ident
# IPv6 local connections:
host    all             all             ::1/128                 ident

Modificare la riga connessioni locali IPv4 per usare md5 anziché ident, in modo da poter accedere con un nome utente e una password:

# IPv4 local connections:
host    all             all             127.0.0.1/32            md5

Riavviare quindi il servizio PostgreSQL:

sudo systemctl restart postgresql

Per avviare come utente postgres predefinito psql, un terminale interattivo per PostgreSQL, eseguire questo comando:

sudo -u postgres psql

Creare un nuovo account utente con il nome utente dell'account Linux usato per accedere. Creare una password:

CREATE USER <username> WITH CREATEDB;
CREATE DATABASE <username>;
ALTER USER <username> password '<password>';
\quit

Accedere a psql:

psql

Importare i dati in un nuovo database:

CREATE DATABASE spam;
\c spam
CREATE TABLE data (word_freq_make real, word_freq_address real, word_freq_all real, word_freq_3d real,word_freq_our real, word_freq_over real, word_freq_remove real, word_freq_internet real,word_freq_order real, word_freq_mail real, word_freq_receive real, word_freq_will real,word_freq_people real, word_freq_report real, word_freq_addresses real, word_freq_free real,word_freq_business real, word_freq_email real, word_freq_you real, word_freq_credit real,word_freq_your real, word_freq_font real, word_freq_000 real, word_freq_money real,word_freq_hp real, word_freq_hpl real, word_freq_george real, word_freq_650 real, word_freq_lab real,word_freq_labs real, word_freq_telnet real, word_freq_857 real, word_freq_data real,word_freq_415 real, word_freq_85 real, word_freq_technology real, word_freq_1999 real,word_freq_parts real, word_freq_pm real, word_freq_direct real, word_freq_cs real, word_freq_meeting real,word_freq_original real, word_freq_project real, word_freq_re real, word_freq_edu real,word_freq_table real, word_freq_conference real, char_freq_semicolon real, char_freq_leftParen real,char_freq_leftBracket real, char_freq_exclamation real, char_freq_dollar real, char_freq_pound real, capital_run_length_average real, capital_run_length_longest real, capital_run_length_total real, spam integer);
\copy data FROM /home/<username>/spambase.data DELIMITER ',' CSV;
\quit

Verranno ora esaminati i dati ed eseguite alcune query con SQuirreL SQL, uno strumento grafico che può interagire con i database tramite un driver JDBC.

Innanzitutto, nel menu Applicazioni aprire SQuirreL SQL. Per configurare il driver:

  1. Selezionare Driver di Visualizzazione Windows>
  2. Fare clic con il pulsante destro del mouse su PostgreSQL e scegliere Modifica driver
  3. Selezionare Extra Class Path Add (Aggiungi percorso>classe aggiuntivo)
  4. Per Nome file immettere /usr/share/java/jdbcdrivers/postgresql-9.4.1208.jre6.jar
  5. Selezionare Apri
  6. Selezionare List Drivers (Elenca driver). Per Nome classe selezionare org.postgresql.Driver e quindi selezionare OK

Per configurare la connessione al server locale:

  1. Selezionare Windows>View Aliases (Visualizza alias).
  2. Scegliere il pulsante + per creare un nuovo alias. Per il nuovo nome alias immettere Spam database
  3. Per Driver selezionare PostgreSQL
  4. Impostare l'URL su jdbc:postgresql://localhost/spam
  5. Immettere il nome utente e la password
  6. seleziona OK.
  7. Per aprire la finestra Connessione ion, fare doppio clic sull'alias del database spam
  8. Seleziona Connetti

Per eseguire alcune query:

  1. Selezionare la scheda SQL
  2. Nella casella query nella parte superiore della scheda SQL immettere una query di base, ad esempio SELECT * from data;
  3. Premere CTRL+INVIO per eseguire la query. Per impostazione predefinita, SQuirreL SQL restituisce le prime 100 righe della query

È possibile eseguire molte altre query per esplorare questi dati. Ad esempio, in cosa differisce la frequenza della parola make tra posta indesiderata e non indesiderata?

SELECT avg(word_freq_make), spam from data group by spam;

Quali sono le caratteristiche della posta elettronica che contengono spesso 3d?

SELECT * from data order by word_freq_3d desc;

La maggior parte dei messaggi di posta elettronica con un'occorrenza elevata di 3d è la posta indesiderata apparente. Queste informazioni possono essere utili per la creazione di un modello predittivo per la classificazione dei messaggi di posta elettronica.

Per l'apprendimento automatico usando i dati archiviati in un database PostgreSQL, MADlib funziona correttamente.

Azure Synapse Analytics (in precedenza SQL DW)

Azure Synapse Analytics è un database basato sul cloud con scalabilità orizzontale in grado di elaborare volumi elevati di dati, relazionali e non relazionali. Per altre informazioni, vedere Che cos'è Azure Synapse Analytics?

Per connettersi al data warehouse e creare la tabella, eseguire questo comando da un prompt dei comandi:

sqlcmd -S <server-name>.database.windows.net -d <database-name> -U <username> -P <password> -I

Al prompt di sqlcmd eseguire questo comando:

CREATE TABLE spam (word_freq_make real, word_freq_address real, word_freq_all real, word_freq_3d real,word_freq_our real, word_freq_over real, word_freq_remove real, word_freq_internet real,word_freq_order real, word_freq_mail real, word_freq_receive real, word_freq_will real,word_freq_people real, word_freq_report real, word_freq_addresses real, word_freq_free real,word_freq_business real, word_freq_email real, word_freq_you real, word_freq_credit real,word_freq_your real, word_freq_font real, word_freq_000 real, word_freq_money real,word_freq_hp real, word_freq_hpl real, word_freq_george real, word_freq_650 real, word_freq_lab real,word_freq_labs real, word_freq_telnet real, word_freq_857 real, word_freq_data real,word_freq_415 real, word_freq_85 real, word_freq_technology real, word_freq_1999 real,word_freq_parts real, word_freq_pm real, word_freq_direct real, word_freq_cs real, word_freq_meeting real,word_freq_original real, word_freq_project real, word_freq_re real, word_freq_edu real,word_freq_table real, word_freq_conference real, char_freq_semicolon real, char_freq_leftParen real,char_freq_leftBracket real, char_freq_exclamation real, char_freq_dollar real, char_freq_pound real, capital_run_length_average real, capital_run_length_longest real, capital_run_length_total real, spam integer) WITH (CLUSTERED COLUMNSTORE INDEX, DISTRIBUTION = ROUND_ROBIN);
GO

Copiare i dati con bcp:

bcp spam in spambaseHeaders.data -q -c -t  ',' -S <server-name>.database.windows.net -d <database-name> -U <username> -P <password> -F 1 -r "\r\n"

Nota

Il file scaricato contiene terminazioni riga di tipo Windows. Lo strumento bcp prevede terminazioni riga di tipo Unix. Usare il flag -r per indicare a bcp questo problema.

Eseguire quindi una query usando sqlcmd:

select top 10 spam, char_freq_dollar from spam;
GO

È anche possibile eseguire query usando SQuirreL SQL. Seguire le procedure come per PostgreSQL usando il driver JDBC di SQL Server. Il driver JDBC si trova nella cartella /usr/share/java/jdbcdrivers/sqljdbc42.jar.