Condividi tramite


Data science con Data Science Virtual Machine per Ubuntu in Azure

Questa procedura dettagliata descrive come eseguire diverse attività comuni di data science tramite la Data Science Virtual Machine (DSVM) per Ubuntu. La DSVM per Ubuntu è un'immagine di macchina virtuale disponibile in Azure che dispone di una raccolta preinstallata di strumenti comune usati per l'analisi dei dati e l'apprendimento automatico. La risorsa Effettuare il provisioning della Data Science Virtual Machine per Ubuntu elenca i componenti software principali. L'immagine DSVM semplifica le attività iniziali con data science in pochi minuti, evitando la necessità di installare e configurare ogni strumento singolarmente. 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 dei messaggi di 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 proprio per i modesti requisiti della risorsa.

Nota

Questa procedura dettagliata è stata creata con una DSVM per Linux di dimensioni D2 v2. Per completare le procedure illustrate, è possibile usare una DSVM di queste dimensioni.

Per ottenere più spazio di archiviazione, è possibile creare più dischi e collegarli alla DSVM. Poiché questi dischi usano l'archiviazione di Azure persistente, i relativi dati vengono conservati anche se il server viene sottoposto a un nuovo provisioning in seguito a un ridimensionamento o a un arresto. Per aggiungere un disco e collegarlo alla DSVM, seguire la procedura illustrata in Aggiungere un disco a una VM Linux. Nei passi per aggiungere un disco viene usata 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 è l'uso di 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:

  • Le colonne quali word_freq_WORD indicano la percentuale di parole nel messaggio di posta elettronica che corrisponde a WORD. Se ad esempio word_freq_make è 1, make era l'1% di tutte le parole nell'e-mail.
  • Le colonne come char_freq_CHAR indicano la percentuale di caratteri CHAR nell'e-mail.
  • 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 apprendimento automatico di base. La DSVM viene fornita con CRAN R preinstallato.

Per ottenere copie degli esempi di codice usati in questa procedura dettagliata, clonare il repository Azure-Machine-Learning-Data-Science usando Git. 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 visualizzazione 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 effettuare alcune analisi esplorative, usare il pacchetto ggplot2, una libreria grafica 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 dello zero devia il tracciato, eliminiamola:

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

Una densità non semplice superiore a 1 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 apprendimento automatico per identificare i messaggi di posta elettronica nel set di dati che contengono sia la posta indesiderata sia quella legittima. 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 determinarne le prestazioni sul 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à per le 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 iniziare subito a sviluppare applicazioni di Deep Learning in domini come la comprensione delle immagini e del linguaggio/testo e altri.

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

  • Una guida pratica per la compilazione di una soluzione end-to-end per individuare prodotti all'interno di immagini: il rilevamento di immagini è una tecnica che consente di individuare e classificare gli oggetti all'interno delle immagini. La tecnologia può offrire enormi vantaggi per molti domini aziendali autentici. Ad esempio, i rivenditori possono usare questa tecnica per determinare quale prodotto 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 di documenti di testo: questa procedura dettagliata illustra come creare ed eseguire il training per due architetture di rete neurale diverse, ovvero Hierarchical Attention Network e Long Short Term Memory (LSTM). Queste reti neurali usano l'API Keras per Deep Learning per classificare i documenti di testo. Keras è un front-end a tre dei più popolari framework di apprendimento avanzato: Microsoft Cognitive Toolkit, TensorFlow e Theano.

Altri strumenti

Le sezioni rimanenti mostrano come usare alcuni degli strumenti preinstallati nella DSVM per Linux. Analisi di questi strumenti:

  • 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 tramite Python, sono preinstallate le distribuzioni Anaconda Python 3.5 e 2.7 nella DSVM.

Nota

La distribuzione Anaconda include Conda. È possibile usare Conda per creare ambienti Python personalizzati in cui sono installati versioni o pacchetti diversi.

Leggere una parte del set di dati spambase e classificare le e-mail con macchine a vettori 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. Verranno utilizzate le tre variabili usate in precedenza quando è stato pubblicato il modello R:

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 un 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 sistema di gestione pacchetti di Python (tramite il comando pip) da un Jupyter Notebook nel kernel corrente, usare il comando seguente nella cella di codice:

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

Per usare il programma di installazione di Conda (tramite il comando conda) da un Jupyter Notebook nel kernel corrente, usare il comando seguente 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 Rattle (R Analytical Tool To Learn Easily) è uno strumento grafico di 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 Data (Dati)
  2. Fare clic sul selettore accanto a Filename (Nome file) e quindi selezionare spambaseHeaders.data
  3. Per caricare il file, Selezionare Esegui. Verrà visualizzato il riepilogo di ciascuna colonna, incluso il tipo di dati identificato, se si tratta di un input, 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 spam e quindi impostare Target Data Type (Tipo di dati di destinazione) su Categoric (Categorico)

Per esplorare i dati:

  1. Selezionare la scheda Explore (Esplora)
  2. Selezionare Riepilogo >Esegui per visualizzare alcune informazioni sui tipi di variabili e le statistiche di riepilogo.
  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. Scegliere Distribuzioni
  2. Per word_freq_remove e word_freq_you, selezionare Istogramma
  3. Seleziona Execute. Entrambi i tracciati di densità verranno visualizzati in un'unica finestra grafica, in cui appare chiaro che nelle e-mail la parola tu è molto più frequente della parola rimuovere

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. Scegliere Yes (Sì) per visualizzare il tracciato

Si presentano alcune interessanti correlazioni. Ad esempio, la tecnologia è strettamente correlata a HP e labs. Inoltre è strettamente correlata a 650: infatti l'indicativo di località dei donatori di 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 inoltre può gestire l'analisi di cluster. Escludere ora alcune funzionalità per migliorare la leggibilità dell'output. Nella scheda Data (Dati) selezionare Ignore (Ignora) accanto a ogni variabile, a 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 una frequenza elevata di george e hp ed è probabilmente un messaggio legittimo di posta elettronica aziendale.

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

  1. Selezionare la scheda Model (Modello)
  2. Per Type (Tipo), selezionare Tree (Albero)
  3. Selezionare Execute (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 è in grado di eseguire diversi metodi di apprendimento automatico e valutarli rapidamente. Si tratta di una funzionalità utile. Ecco come eseguire questa operazione:

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

Al termine della compilazione dei modelli, selezionare la scheda Registro per visualizzare il codice R che Rattle ha 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 sofisticato database relazionale open source. Questa sezione illustra come eseguire query sul set di dati spambase dopo averlo caricato in PostgreSQL.

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

Verso la fine del file di configurazione sono presenti diverse righe con informazioni dettagliate sulle 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 di connessioni locali IPv4 per usare md5 anziché ident, così 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.

Prima di tutto, aprire SQuirreL SQL dal menu Applications (Applicazioni). Per configurare il driver:

  1. Selezionare Windows>View Drivers (Visualizza driver)
  2. Fare clic con il pulsante destro del mouse su PostgreSQL e scegliere Modify Driver (Modifica driver)
  3. Selezionare Extra Class Path (Percorso classe extra)>Add (Aggiungi)
  4. Per File Name (Nome file), immettere /usr/share/java/jdbcdrivers/postgresql-9.4.1208.jre6.jar
  5. Selezionare Open (Apri)
  6. Selezionare List Drivers (Elenca driver). Per Class Name (Nome classe), selezionare org.postgresql.Driver e quindi scegliere 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 (Database di posta indesiderata)
  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 Connection (Connessione), fare doppio clic sull'alias Spam database (Database di posta indesiderata)
  8. Seleziona Connetti

Per eseguire alcune query:

  1. Selezionare la scheda SQL
  2. Nella casella di 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 dei messaggi di 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 risulta chiaramente essere posta indesiderata. 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 scale-out basato sul cloud che può elaborare ingenti volumi di dati relazionali e non relazionali. Per altre informazioni, visitare Informazioni su Azure Synapse Analytics

Per connettersi al data warehouse e creare la tabella, eseguire questo comando al 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 riferimento.

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.