Gegevenswetenschap met een virtuele Ubuntu-Datawetenschap-machine in Azure

In dit scenario wordt beschreven hoe u verschillende algemene data science-taken kunt uitvoeren met de Ubuntu Datawetenschap Virtual Machine (DSVM). De Ubuntu DSVM is een installatiekopie van een virtuele machine die beschikbaar is in Azure, met een vooraf geïnstalleerde hulpprogrammaverzameling die vaak wordt gebruikt voor gegevensanalyse en machine learning. De ubuntu-Datawetenschap virtuele-machineresource inrichten bevat een overzicht van de belangrijkste softwareonderdelen. Met de DSVM-installatiekopieën kunt u in slechts een paar minuten eenvoudig aan de slag met gegevenswetenschap, zodat u niet elk van de hulpprogramma's afzonderlijk hoeft te installeren en configureren. U kunt de DSVM eenvoudig omhoog schalen als dat nodig is en u kunt deze stoppen wanneer deze niet in gebruik is. De DSVM-resource is zowel elastisch als kostenefficiënt.

In dit scenario analyseren we de gegevensset spambase . Spambase is een set e-mailberichten die zijn gemarkeerd als spam of ham (geen spam). Spambase bevat ook enkele statistieken over de inhoud van de e-mail. Verderop in de procedure bespreken we de statistieken.

Vereisten

Voordat u een Linux-DSVM kunt gebruiken, moet u aan deze vereisten voldoen:

De spambase-gegevensset downloaden

De spambase-gegevensset is een redelijk kleine set gegevens met 4.601 voorbeelden. De handige, beheerbare grootte van deze resource maakt het eenvoudig om enkele van de belangrijkste functies van de DSVM weer te geven vanwege de bescheiden resourcevereisten.

Notitie

Deze procedure is gemaakt met behulp van een D2 v2-grootte Linux DSVM. U kunt een DSVM gebruiken om de procedures te voltooien die in dit scenario worden weergegeven.

Voor meer opslagruimte kunt u meer schijven maken en deze koppelen aan uw DSVM. De schijven maken gebruik van permanente Azure-opslag, zodat hun gegevens behouden blijven, zelfs als de server opnieuw wordt ingericht vanwege het wijzigen van de grootte of een afsluiting. Als u een schijf wilt toevoegen en deze wilt koppelen aan uw DSVM, voert u de stappen uit in Een schijf toevoegen aan een Virtuele Linux-machine. De stappen voor het toevoegen van een schijf maken gebruik van de Azure CLI, die al is geïnstalleerd op de DSVM. U kunt de stappen volledig uitvoeren vanuit de DSVM zelf. Als een andere optie om de opslag te vergroten, kunt u Azure Files gebruiken.

Als u de gegevens wilt downloaden, opent u een terminalvenster en voert u deze opdracht uit:

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

Het gedownloade bestand heeft geen veldnamenrij. Laten we een ander bestand maken dat wel een header heeft. Voer deze opdracht uit om een bestand te maken met de juiste headers:

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

Voeg vervolgens de twee bestanden samen:

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

De gegevensset heeft verschillende soorten statistieken voor elke e-mail:

  • Kolommen zoals word_freq_WORD geven het percentage woorden in de e-mail aan die overeenkomen met WORD. Als word_freq_make bijvoorbeeld 1 is, is dat 1% van alle woorden in het e-mailbericht.
  • Kolommen zoals char_freq_CHAR geven het percentage van alle tekens in het e-mailbericht aan dat CHAR is.
  • capital_run_length_longest is de langste lengte van een reeks hoofdletters.
  • capital_run_length_average is de gemiddelde lengte van alle reeksen hoofdletters.
  • capital_run_length_total is de totale lengte van alle reeksen hoofdletters.
  • spam geeft aan of de e-mail al dan niet als spam is beschouwd (1 = spam, 0 = geen spam).

De gegevensset verkennen met R Open

Laten we de gegevens bekijken en R gebruiken om eenvoudige machine learning uit te voeren. De DSVM wordt geleverd met CRAN R vooraf geïnstalleerd.

Als u kopieën wilt ophalen van de codevoorbeelden die in dit scenario worden gebruikt, gebruikt u Git om de opslagplaats Azure-Machine-Learning-Data-Science te klonen. Git is vooraf geïnstalleerd op de DSVM. Voer op de Git-opdrachtregel het volgende uit:

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

Open een terminalvenster en start een nieuwe R-sessie in de interactieve R-console. Voer de volgende opdracht uit om de gegevens te importeren en de omgeving in te stellen:

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

In dit codevoorbeeld ziet u samenvattingsstatistieken over elke kolom:

summary(data)

Voor een andere weergave van de gegevens:

str(data)

In deze weergave ziet u het type van elke variabele en de eerste paar waarden in de gegevensset.

De spamkolom is gelezen als een geheel getal, maar het is eigenlijk een categorische variabele (of factor). Het type instellen:

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

Voor een experimentele analyse gebruikt u het ggplot2-pakket , een populaire grafiekbibliotheek voor R. Het ggplot2-pakket is vooraf geïnstalleerd op de DSVM. Op basis van de eerder weergegeven samenvattingsgegevens hebben we samenvattingsstatistieken over de frequentie van het uitroepteken. Als u deze frequenties hier wilt uitzetten, voert u deze opdrachten uit:

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

Omdat de nulbalk scheeftrekken in het teken, gaan we het verwijderen:

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

Een niet-triviale dichtheid boven 1 die er interessant uitziet. Laten we alleen die gegevens bekijken:

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

Splits het vervolgens op spam versus ham:

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")

Met deze voorbeelden kunt u vergelijkbare plots maken en gegevens in de andere kolommen verkennen.

Een machine learning-model trainen en testen

Laten we een paar machine learning-modellen trainen om de e-mailberichten in de gegevensset te identificeren die spam of ham bevatten. In deze sectie trainen we een beslissingsstructuurmodel en een willekeurig forestmodel. Vervolgens testen we de nauwkeurigheid van de voorspellingen.

Notitie

Het rpart-pakket (Recursive Partitioning and Regression Trees) dat in de volgende code wordt gebruikt, is al geïnstalleerd op de DSVM.

Laten we eerst de gegevensset splitsen in trainingssets en testsets:

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

Maak vervolgens een beslissingsstructuur om de e-mailberichten te classificeren:

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

Dit is het resultaat:

Diagram met de gemaakte beslissingsstructuur.

Gebruik dit codevoorbeeld om te bepalen hoe goed deze presteert op de trainingsset:

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

Voer deze code uit om te bepalen hoe goed deze presteert voor de testset:

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

Laten we ook een willekeurig forestmodel proberen. Een willekeurig bos traint meerdere beslissingsstructuren. Het voert een klasse uit die de moduswaarde is van de classificaties van alle afzonderlijke beslissingsstructuren. Ze bieden een krachtigere machine learning-benadering omdat ze juist zijn voor de neiging van een beslissingsstructuurmodel om een trainingsgegevensset te overfitren.

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

Zelfstudies en scenario's voor Deep Learning

Naast de op frameworks gebaseerde voorbeelden wordt ook een reeks uitgebreide scenario's geboden. Met deze scenario's kunt u snel aan de slag met de ontwikkeling van deep learning-toepassingen in afbeeldingen, teksttaalbegrip, enzovoort.

  • Neurale netwerken uitvoeren in verschillende frameworks: een uitgebreid overzicht dat laat zien hoe u code van het ene framework naar het andere migreert. Ook ziet u hoe u model- en runtimeprestaties vergelijkt tussen frameworks.

  • Een handleiding voor het bouwen van een end-to-end oplossing voor het detecteren van producten binnen afbeeldingen: Met de techniek voor afbeeldingsdetectie kunnen objecten in afbeeldingen worden gevonden en geclassificeerd. De technologie kan enorme beloningen bieden in veel echte zakelijke domeinen. Retailers kunnen deze techniek bijvoorbeeld gebruiken om te bepalen welk product een klant heeft opgehaald uit de plank. Deze informatie helpt op zijn beurt bij het beheren van productvoorraad.

  • Deep Learning voor audio: in deze zelfstudie ziet u hoe u een Deep Learning-model traint voor audio-gebeurtenisdetectie op de gegevensset met stedelijke geluiden. De zelfstudie biedt een overzicht van het werken met audiogegevens.

  • Classificatie van tekstdocumenten: In dit scenario ziet u hoe u twee verschillende neurale netwerkarchitecturen bouwt en traint: het hiërarchische aandachtsnetwerk en het LSTM (Long Short Term Memory). Voor het classificeren van tekstdocumenten gebruiken deze neurale netwerken de Keras-API voor deep learning. Keras is een front-end van drie van de populairste deep learning-frameworks: Microsoft Cognitive Toolkit, TensorFlow en Theano.

Andere hulpprogramma's

In de resterende secties ziet u hoe u een aantal hulpprogramma's gebruikt die vooraf zijn geïnstalleerd op de Linux-DSVM. We onderzoeken deze hulpprogramma's:

  • XGBoost
  • Python
  • JupyterHub
  • Rattle
  • PostgreSQL en SQuirreL SQL
  • Azure Synapse Analytics (voorheen SQL DW)

XGBoost

XGBoost biedt een snelle en nauwkeurige boosted tree-implementatie.

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))

XGBoost kan ook aanroepen vanuit Python of een opdrachtregel.

Python

Voor Python-ontwikkeling zijn de Anaconda Python-distributies 3.5 en 2.7 vooraf geïnstalleerd op de DSVM.

Notitie

De Anaconda-distributie omvat Conda. U kunt Conda gebruiken om aangepaste Python-omgevingen te maken waarop verschillende versies of pakketten zijn geïnstalleerd.

Laten we een aantal spambase-gegevenssets lezen en de e-mailberichten classificeren met ondersteuningsvectormachines 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)

Voorspellingen doen:

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

Laten we een basismodel maken om te laten zien hoe u een Azure Machine Learning-eindpunt publiceert. We gebruiken de drie variabelen die we hebben gebruikt toen we het R-model eerder hebben gepubliceerd:

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

JupyterHub

De Anaconda-distributie in de DSVM wordt geleverd met een Jupyter Notebook. Deze resource is een platformoverschrijdende omgeving voor het delen van code en analyse van Python, R of Julia. Het Jupyter Notebook wordt geopend via JupyterHub. U meldt zich aan met uw lokale Linux-gebruikersnaam en -wachtwoord op https://< DSVM DNS-naam of IP-adres>:8000/. U vindt alle JupyterHub-configuratiebestanden in /etc/jupyterhub.

Notitie

Als u de Python-Pakketbeheer (via de pip opdracht) wilt gebruiken vanuit een Jupyter Notebook in de huidige kernel, gebruikt u deze opdracht in de codecel:

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

Als u het Conda-installatieprogramma (via de conda opdracht) wilt gebruiken vanuit een Jupyter Notebook in de huidige kernel, gebruikt u deze opdracht in een codecel:

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

Er zijn al verschillende voorbeeldnotebooks geïnstalleerd op de DSVM:

Notitie

De taal Julia is ook beschikbaar via de opdrachtregel op de Linux-DSVM.

Rattle

U kunt het grafische R-hulpprogramma Rattle (RAnalytische T ool To L Easily) gebruiken voor gegevensanalyse. Rattle heeft een intuïtieve interface waarmee u eenvoudig gegevens kunt laden, verkennen en transformeren en modellen kunt bouwen en evalueren. Rattle: Een Data Mining-GUI voor R biedt een overzicht van de functies van Rattle.

Voer deze opdrachten uit om Rattle te installeren en te starten:

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

Notitie

U hoeft Rattle niet te installeren op de DSVM. Mogelijk wordt u echter gevraagd extra pakketten te installeren wanneer Rattle wordt geopend.

Rattle maakt gebruik van een interface op basis van tabs. De meeste tabbladen komen overeen met stappen in het team Datawetenschap proces, zoals het laden van gegevens of het verkennen van gegevens. Het data science-proces loopt van links naar rechts door de tabbladen. Het laatste tabblad bevat een logboek van de R-opdrachten die Rattle heeft uitgevoerd.

De gegevensset laden en configureren:

  1. Als u het bestand wilt laden, selecteert u het tabblad Gegevens
  2. Kies de selector naast Bestandsnaam en selecteer vervolgens spambaseHeaders.data
  3. Het bestand laden. selecteer Uitvoeren. U ziet een samenvatting van elke kolom, met inbegrip van het geïdentificeerde gegevenstype, ongeacht of het een invoer, doel of een ander type variabele is, en het aantal unieke waarden
  4. Rattle heeft de spamkolom correct geïdentificeerd als het doel. Selecteer de spamkolom en stel vervolgens het doelgegevenstype in op Categorisch

De gegevens verkennen:

  1. Selecteer het tabblad Verkennen
  2. Als u informatie over de typen variabelen en enkele overzichtsstatistieken wilt weergeven, selecteert u Samenvatting>uitvoeren.
  3. Als u andere typen statistieken over elke variabele wilt weergeven, selecteert u andere opties, zoals Beschrijven of Basisbeginselen.

U kunt ook het tabblad Verkennen gebruiken om inzichtelijke plots te genereren. Een histogram van de gegevens tekenen:

  1. Distributies selecteren
  2. Selecteer Histogram voor word_freq_remove en word_freq_you
  3. Selecteer Uitvoeren. U ziet beide dichtheidsplots in één grafiekvenster, waarbij het woord dat u duidelijk vaker in e-mailberichten ziet, vergeleken met verwijderen

De correlatieplots zijn ook interessant. Een plot maken:

  1. Voor Type selecteert u Correlatie
  2. Selecteer Uitvoeren
  3. Rattle waarschuwt u dat het maximaal 40 variabelen aanbeveelt. Selecteer Ja om de plot weer te geven

Er zijn enkele interessante correlaties die komen. Technologie correleert bijvoorbeeld sterk met HP en labs. Het correleert ook sterk met 650 omdat het netnummer van de gegevenssetdonoren 650 is.

De numerieke waarden voor de correlaties tussen woorden zijn beschikbaar in het venster Verkennen . Het is interessant om bijvoorbeeld te weten dat technologie negatief is gecorreleerd met uw en geld.

Rattle kan de gegevensset transformeren om enkele veelvoorkomende problemen op te lossen. Het kan bijvoorbeeld functies opnieuw schalen, ontbrekende waarden invoeren, uitbijters verwerken en variabelen of waarnemingen met ontbrekende gegevens verwijderen. Rattle kan ook associatieregels tussen waarnemingen en variabelen identificeren. In dit inleidende overzicht worden deze tabbladen niet behandeld.

Rattle kan ook clusteranalyses verwerken. We sluiten enkele functies uit om de uitvoer beter leesbaar te maken. Selecteer Op het tabblad Gegevens naast elk van de variabelen negeren, met uitzondering van deze 10 items:

  • 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
  • Spam

Ga terug naar het tabblad Cluster . Selecteer KMeans en stel het aantal clusters in op 4. Selecteer Uitvoeren. In het uitvoervenster worden de resultaten weergegeven. Eén cluster heeft hoge frequenties van george en hp, en is waarschijnlijk een legitieme zakelijke e-mail.

Een eenvoudig machine learning-model voor een beslissingsstructuur bouwen:

  1. Selecteer het tabblad Model
  2. Selecteer Structuur voor het type
  3. Selecteer Uitvoeren om de structuur in tekstvorm weer te geven in het uitvoervenster
  4. Selecteer de knop Tekenen om een grafische versie weer te geven. De beslissingsstructuur lijkt op de boom die we eerder met rpart hebben verkregen.

Rattle kan verschillende machine learning-methoden uitvoeren en deze snel evalueren. Dit is een handige functie. Ga als volgt te werk:

  1. Voor Type selecteert u Alles
  2. Selecteer Uitvoeren
  3. Wanneer Rattle klaar is met uitvoering, kunt u een willekeurige typewaarde , zoals SVM, selecteren en de resultaten bekijken
  4. U kunt ook de prestaties van de modellen in de validatieset vergelijken met het tabblad Evalueren . In de selectie Foutmatrix ziet u bijvoorbeeld de verwarringsmatrix, de algehele fout en de gemiddelde klassefout voor elk model in de validatieset. U kunt ook ROC-curven tekenen, gevoeligheidsanalyse uitvoeren en andere typen modelevaluaties uitvoeren

Wanneer u klaar bent met het bouwen van uw modellen, selecteert u het tabblad Logboek om de R-code weer te geven die tijdens uw sessie is uitgevoerd. U kunt de knop Exporteren selecteren om deze op te slaan.

Notitie

De huidige release van Rattle bevat een bug. Als u het script wilt wijzigen of wilt gebruiken om de stappen later te herhalen, moet u een # teken invoegen vóór Dit logboek exporteren... in de tekst van het logboek.

PostgreSQL en SQuirreL SQL

De DSVM wordt geleverd met PostgreSQL geïnstalleerd. PostgreSQL is een geavanceerde, open source relationele database. In deze sectie wordt beschreven hoe u de spambase-gegevensset in PostgreSQL laadt en er vervolgens een query op uitvoert.

Voordat u de gegevens kunt laden, moet u wachtwoordverificatie van de localhost toestaan. Voer in een opdrachtprompt het volgende uit:

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

Onderaan het configuratiebestand worden de toegestane verbindingen in verschillende regels beschreven:

# "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

Wijzig de lokale IPv4-verbindingslijn om md5 te gebruiken in plaats van ident, zodat we ons kunnen aanmelden met een gebruikersnaam en wachtwoord:

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

Start vervolgens de PostgreSQL-service opnieuw op:

sudo systemctl restart postgresql

Als u psql (een interactieve terminal voor PostgreSQL) wilt starten als de ingebouwde postgres-gebruiker, voert u deze opdracht uit:

sudo -u postgres psql

Maak een nieuw gebruikersaccount met de gebruikersnaam van het Linux-account dat u hebt gebruikt om u aan te melden. Een wachtwoord maken:

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

Meld u aan bij psql:

psql

Importeer de gegevens in een nieuwe 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

Laten we nu de gegevens verkennen en enkele query's uitvoeren met SQuirreL SQL, een grafisch hulpprogramma dat kan communiceren met databases via een JDBC-stuurprogramma.

Open eerst SQuirreL SQL in het menu Toepassingen . Het stuurprogramma instellen:

  1. Stuurprogramma's voor Windows-weergave>selecteren
  2. Klik met de rechtermuisknop op PostgreSQL en selecteer Stuurprogramma wijzigen
  3. Extra klaspad>toevoegen selecteren
  4. Voer bij Bestandsnaam /usr/share/java/jdbcdrivers/postgresql-9.4.1208.jre6.jar
  5. Selecteer Openen
  6. Selecteer Lijststuurprogramma's. Voor klassenaam selecteert u org.postgresql.Driver en selecteert u VERVOLGENS OK

De verbinding met de lokale server instellen:

  1. Selecteer Aliassen voor Windows-weergave>.
  2. Selecteer de + knop om een nieuwe alias te maken. Voer spamdatabase in voor de nieuwe aliasnaam
  3. Voor stuurprogramma selecteert u PostgreSQL
  4. Stel de URL in op jdbc:postgresql://localhost/spam
  5. Voer uw gebruikersnaam en wachtwoord in
  6. Selecteer OK.
  7. Als u het venster Verbinding maken ion wilt openen, dubbelklikt u op de alias spamdatabase
  8. Selecteer Verbinden

Een aantal query's uitvoeren:

  1. Selecteer het tabblad SQL
  2. Voer in het queryvak boven aan het SQL-tabblad een basisquery in: bijvoorbeeld SELECT * from data;
  3. Druk op Ctrl+Enter om de query uit te voeren. Standaard retourneert SQuirreL SQL de eerste 100 rijen uit uw query

U kunt nog veel meer query's uitvoeren om deze gegevens te verkennen. Hoe verschilt de frequentie van het woord bijvoorbeeld tussen spam en ham?

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

Wat zijn de kenmerken van e-mail die vaak 3d bevatten?

SELECT * from data order by word_freq_3d desc;

De meeste e-mailberichten met een hoge aanwezigheid van 3d zijn duidelijk spam. Deze informatie kan nuttig zijn voor het bouwen van een voorspellend model om e-mailberichten te classificeren.

Voor machine learning met behulp van gegevens die zijn opgeslagen in een PostgreSQL-database, werkt MADlib goed.

Azure Synapse Analytics (voorheen SQL DW)

Azure Synapse Analytics is een clouddatabase die enorme hoeveelheden gegevens kan verwerken, zowel relationeel als niet-relationeel. Ga voor meer informatie naar Wat is Azure Synapse Analytics?

Als u verbinding wilt maken met het datawarehouse en de tabel wilt maken, voert u deze opdracht uit vanaf een opdrachtprompt:

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

Voer bij de sqlcmd-prompt deze opdracht uit:

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

Kopieer de gegevens met 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"

Notitie

Het gedownloade bestand bevat regeleinden in Windows-stijl. In het bcp-hulpprogramma worden einden van unix-stijlen verwacht. Gebruik de vlag -r om bcp hierover te vertellen.

Voer vervolgens een query uit met behulp van sqlcmd:

select top 10 spam, char_freq_dollar from spam;
GO

U kunt ook query's uitvoeren met SQuirreL SQL. Volg de stappen die vergelijkbaar zijn met PostgreSQL met behulp van het JDBC-stuurprogramma van SQL Server. Het JDBC-stuurprogramma bevindt zich in de map /usr/share/java/jdbcdrivers/sqljdbc42.jar.