Nauka o danych przy użyciu maszyny wirtualnej z systemem Ubuntu Nauka o danych na platformie Azure

W tym przewodniku opisano sposób wykonywania kilku typowych zadań nauki o danych za pomocą maszyny wirtualnej z systemem Ubuntu Nauka o danych (DSVM). Maszyna DSVM z systemem Ubuntu to obraz maszyny wirtualnej dostępny na platformie Azure z wstępnie zainstalowaną kolekcją narzędzi używaną często do analizy danych i uczenia maszynowego. Zasób Provision the Ubuntu Nauka o danych Virtual Machine (Aprowizuj zasób maszyny wirtualnej z systemem Ubuntu Nauka o danych) udostępnia kluczowe składniki oprogramowania. Obraz DSVM ułatwia rozpoczęcie pracy z nauką o danych w ciągu zaledwie kilku minut, unikając konieczności instalowania i konfigurowania poszczególnych narzędzi osobno. W razie potrzeby można łatwo skalować maszynę DSVM w górę i zatrzymać ją, gdy nie jest używana. Zasób DSVM jest zarówno elastyczny, jak i ekonomiczny.

W tym przewodniku analizujemy zestaw danych bazy spamu. Spambase to zestaw wiadomości e-mail oznaczonych jako spam lub ham (nie spam). Baza spamu zawiera również pewne statystyki dotyczące zawartości wiadomości e-mail. W dalszej części przewodnika omówimy statystyki.

Wymagania wstępne

Przed rozpoczęciem korzystania z maszyny DSVM z systemem Linux należy uwzględnić następujące wymagania wstępne:

Pobieranie zestawu danych bazy spamu

Zestaw danych bazy spamu to dość mały zestaw danych zawierający 4601 przykładów. Wygodny, możliwy do zarządzania rozmiar tego zasobu ułatwia wyświetlenie niektórych kluczowych funkcji maszyny DSVM ze względu na skromne wymagania dotyczące zasobów.

Uwaga

Ten przewodnik został utworzony przy użyciu maszyny DSVM w wersji D2 w wersji 2. Tego rozmiaru maszyny wirtualnej DSVM można użyć do wykonania procedur przedstawionych w tym przewodniku.

Aby uzyskać więcej miejsca do magazynowania, możesz utworzyć więcej dysków i dołączyć je do maszyny DSVM. Dyski używają trwałego magazynu platformy Azure, więc ich dane są zachowywane nawet wtedy, gdy serwer zostanie ponownie zaaprowizowany z powodu zmiany rozmiaru lub zamknięcia. Aby dodać dysk i dołączyć go do maszyny wirtualnej DSVM, wykonaj kroki opisane w temacie Dodawanie dysku do maszyny wirtualnej z systemem Linux. Kroki dodawania dysku używają interfejsu wiersza polecenia platformy Azure, który jest już zainstalowany na maszynie DSVM. Możesz wykonać kroki całkowicie z poziomu samej maszyny DSVM. Kolejną opcją zwiększenia magazynu jest użycie usługi Azure Files.

Aby pobrać dane, otwórz okno terminalu, a następnie uruchom następujące polecenie:

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

Pobrany plik nie ma wiersza nagłówka. Utwórzmy inny plik, który ma nagłówek. Uruchom to polecenie, aby utworzyć plik z odpowiednimi nagłówkami:

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

Następnie połącz dwa pliki ze sobą:

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

Zestaw danych zawiera kilka typów statystyk dla każdej wiadomości e-mail:

  • Kolumny, takie jak word_freq_WORD, wskazują wartość procentową wyrazów w wiadomości e-mail zgodnej z usługą WORD. Jeśli na przykład word_freq_make wynosi 1, w wiadomości e-mail wprowadź 1% wszystkich wyrazów.
  • Kolumny, takie jak char_freq_CHAR , wskazują wartość procentową wszystkich znaków w wiadomości e-mail, która jest znakiem CHAR.
  • capital_run_length_longest jest najdłuższą długością sekwencji wielkich liter.
  • capital_run_length_average jest średnią długością wszystkich sekwencji wielkie litery.
  • capital_run_length_total jest łączną długością wszystkich sekwencji wielkie litery.
  • spam wskazuje, czy wiadomość e-mail została uznana za spam, czy nie (1 = spam, 0 = nie spam).

Eksplorowanie zestawu danych przy użyciu języka R Open

Przyjrzyjmy się danym i użyjemy języka R, aby wykonać podstawowe uczenie maszynowe. Maszyna DSVM jest dostarczana ze wstępnie zainstalowanym językiem CRAN R.

Aby uzyskać kopie przykładów kodu używanych w tym przewodniku, użyj narzędzia git, aby sklonować repozytorium Azure-Machine-Edukacja-Data-Science. Usługa Git jest wstępnie zainstalowana na maszynie DSVM. W wierszu polecenia git uruchom polecenie:

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

Otwórz okno terminalu i uruchom nową sesję języka R w interaktywnej konsoli języka R. Aby zaimportować dane i skonfigurować środowisko, uruchom polecenie:

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

Ten przykładowy kod przedstawia podsumowanie statystyk dotyczących każdej kolumny:

summary(data)

W przypadku innego widoku danych:

str(data)

Ten widok przedstawia typ każdej zmiennej oraz kilka pierwszych wartości w zestawie danych.

Kolumna spamu była odczytywana jako liczba całkowita, ale w rzeczywistości jest to zmienna kategorii (lub czynnik). Aby ustawić jego typ:

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

W przypadku analizy eksploracyjnej użyj pakietu ggplot2 , popularnej biblioteki grafów dla języka R. Pakiet ggplot2 jest wstępnie zainstalowany na maszynie WIRTUALNEJ DSVM. Na podstawie wyświetlanych wcześniej danych podsumowania mamy statystyki podsumowania dotyczące częstotliwości znaku wykrzyknika. Aby wykreślić te częstotliwości, uruchom następujące polecenia:

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

Ponieważ pasek zerowy wypacza wykres, zlikwidujmy go:

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

Nietriwialną gęstość powyżej 1, która wygląda interesująco. Przyjrzyjmy się tylko tym danym:

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

Następnie podziel go przez spam a 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")

Te przykłady powinny pomóc w podejmowania podobnych wykresów i eksplorowania danych w innych kolumnach.

Trenowanie i testowanie modelu uczenia maszynowego

Wytrenujmy kilka modeli uczenia maszynowego, aby zidentyfikować wiadomości e-mail w zestawie danych, które zawierają spam lub szynkę. W tej sekcji wytrenujemy model drzewa decyzyjnego i model lasu losowego. Następnie testujemy dokładność przewidywań.

Uwaga

Pakiet rpart (Recursive Partitioning and Regression Trees) używany w poniższym kodzie jest już zainstalowany na maszynie DSVM.

Najpierw podzielmy zestaw danych na zestawy treningowe i zestawy testów:

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

Następnie utwórz drzewo decyzyjne, aby sklasyfikować wiadomości e-mail:

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

Oto wynik:

Diagram przedstawiający utworzone drzewo decyzyjne.

Użyj tego przykładowego kodu, aby określić, jak dobrze działa w zestawie treningowym:

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

Aby określić, jak dobrze działa w zestawie testowym, uruchom następujący kod:

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

Wypróbujmy również losowy model lasu. Losowy las trenuje wiele drzew decyzyjnych. Zwraca klasę, która jest wartością trybu klasyfikacji ze wszystkich poszczególnych drzew decyzyjnych. Zapewniają one bardziej zaawansowane podejście do uczenia maszynowego, ponieważ są one poprawne dla tendencji modelu drzewa decyzyjnego do nadmiernego dopasowania zestawu danych treningowych.

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

Samouczki i przewodniki dotyczące uczenia głębokiego

Oprócz przykładów opartych na strukturze dostępny jest również zestaw kompleksowych przewodników. Te przewodniki ułatwiają szybkie rozpoczęcie opracowywania aplikacji uczenia głębokiego na obrazie, zrozumieniu języka tekstu itp. w domenach.

  • Uruchamianie sieci neuronowych w różnych strukturach: kompleksowy przewodnik pokazujący, jak migrować kod z jednej platformy do innej. Pokazano również, jak porównać wydajność modelu i środowiska uruchomieniowego w różnych strukturach.

  • Przewodnik z instrukcjami dotyczącymi tworzenia kompleksowego rozwiązania do wykrywania produktów na obrazach: Technika wykrywania obrazów umożliwia lokalizowanie i klasyfikowanie obiektów na obrazach. Technologia może zapewnić ogromne nagrody w wielu rzeczywistych domenach biznesowych. Na przykład sprzedawcy detaliczni mogą użyć tej techniki, aby określić, który produkt klient odebrał z półki. Te informacje z kolei ułatwiają zarządzanie spisem produktów.

  • Uczenie głębokie dla dźwięku: w tym samouczku pokazano, jak wytrenować model uczenia głębokiego na potrzeby wykrywania zdarzeń dźwiękowych w zestawie danych dźwięku miejskiego. Samouczek zawiera omówienie sposobu pracy z danymi audio.

  • Klasyfikacja dokumentów tekstowych: w tym przewodniku pokazano, jak utworzyć i wytrenować dwie różne architektury sieci neuronowej: hierarchiczną sieć uwagi i pamięć długoterminową (LSTM). Aby sklasyfikować dokumenty tekstowe, te sieci neuronowe używają interfejsu API Keras do uczenia głębokiego. Keras to fronton do trzech najpopularniejszych platform uczenia głębokiego: Microsoft Cognitive Toolkit, TensorFlow i Theano.

Inne narzędzia

W pozostałych sekcjach pokazano, jak używać niektórych narzędzi wstępnie zainstalowanych na maszynie DSVM z systemem Linux. Przeanalizujemy następujące narzędzia:

  • XGBoost
  • Python
  • JupyterHub
  • Rattle
  • PostgreSQL i SQuirreL SQL
  • Azure Synapse Analytics (dawniej SQL DW)

XGBoost

Biblioteka XGBoost zapewnia szybką i dokładną implementację drzewa wzmocnionego.

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

Biblioteka XGBoost może również wywoływać z poziomu języka Python lub wiersza polecenia.

Python

W przypadku programowania w języku Python dystrybucje języka Python Anaconda 3.5 i 2.7 są wstępnie zainstalowane na maszynie DSVM.

Uwaga

Rozkład Anaconda obejmuje Conda. Za pomocą narzędzia Conda można tworzyć niestandardowe środowiska języka Python, w których są zainstalowane różne wersje lub pakiety.

Przeczytajmy w niektórych zestawach danych bazy spamu i klasyfikujmy wiadomości e-mail przy użyciu maszyn wektorów pomocy technicznej w narzędziu 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)

Aby przewidywać:

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

Aby zademonstrować sposób publikowania punktu końcowego usługi Azure Machine Edukacja, utwórzmy bardziej podstawowy model. Używamy trzech zmiennych użytych wcześniej podczas publikowania modelu języka R:

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

JupyterHub

Dystrybucja Anaconda na maszynie DSVM jest dostarczana z notesem Jupyter Notebook. Ten zasób to międzyplatformowe środowisko do udostępniania kodu i analizy języka Python, R lub Julii. Dostęp do notesu Jupyter Notebook jest uzyskiwany za pośrednictwem usługi JupyterHub. Zaloguj się przy użyciu lokalnej nazwy użytkownika i hasła systemu Linux pod adresem https://< DSVM nazwa DNS lub adres> IP:8000/. Wszystkie pliki konfiguracji jupyterHub można znaleźć w witrynie /etc/jupyterhub.

Uwaga

Aby użyć Menedżer pakietów języka Python (za pomocą polecenia) z notesu pip Jupyter Notebook znajdującego się w bieżącym jądrze, użyj tego polecenia w komórce kodu:

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

Aby użyć instalatora Conda (za pomocą conda polecenia) z notesu Jupyter Notebook znajdującego się w bieżącym jądrze, użyj tego polecenia w komórce kodu:

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

Na maszynie DSVM jest już zainstalowanych kilka przykładowych notesów:

Uwaga

Język Julia jest również dostępny w wierszu polecenia na maszynie DSVM systemu Linux.

Rattle

Możesz użyć grzechotu (RAmorski T ool To Learn Easily) graficznego narzędzia R do wyszukiwania danych. Rattle ma intuicyjny interfejs, który ułatwia ładowanie, eksplorowanie i przekształcanie danych oraz tworzenie i ocenianie modeli. Grzechotanie: interfejs GUI wyszukiwania danych dla języka R zawiera przewodnik, który demonstruje funkcje Rattle.

Uruchom następujące polecenia, aby zainstalować i uruchomić rattle:

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

Uwaga

Nie musisz instalować rattle na maszynie DSVM. Może jednak zostać wyświetlony monit o zainstalowanie dodatkowych pakietów po otwarciu programu Rattle.

Grzechota używa interfejsu opartego na tabulatorach. Większość kart odpowiada krokom w procesie Nauka o danych zespołu, takich jak ładowanie danych lub eksplorowanie danych. Proces nauki o danych przepływa od lewej do prawej przez karty. Ostatnia karta zawiera dziennik poleceń języka R uruchomionych przez rattle.

Aby załadować i skonfigurować zestaw danych:

  1. Aby załadować plik, wybierz kartę Dane
  2. Wybierz selektor obok pozycji Nazwa pliku, a następnie wybierz pozycję spambaseHeaders.data
  3. Aby załadować plik. wybierz pozycję Wykonaj. Powinno zostać wyświetlone podsumowanie każdej kolumny, w tym zidentyfikowanego typu danych, niezależnie od tego, czy jest to typ danych wejściowych, docelowych, czy innego typu zmiennej oraz liczba unikatowych wartości
  4. Grzechot poprawnie zidentyfikował kolumnę spamu jako element docelowy. Wybierz kolumnę spamu, a następnie ustaw docelowy typ danych na kategoria

Aby eksplorować dane:

  1. Wybierz kartę Eksploruj
  2. Aby wyświetlić informacje o typach zmiennych i niektórych statystykach podsumowania, wybierz pozycję Wykonywanie podsumowania>.
  3. Aby wyświetlić inne typy statystyk dotyczących każdej zmiennej, wybierz inne opcje, takie jak Opis lub Podstawy.

Możesz również użyć karty Eksploruj, aby wygenerować szczegółowe wykresy. Aby wykreślić histogram danych:

  1. Wybieranie dystrybucji
  2. W przypadku word_freq_remove i word_freq_you wybierz pozycję Histogram
  3. Wybierz polecenie Wykonaj. Oba wykresy gęstości powinny być widoczne w jednym oknie grafu, w którym słowo, które wyraźnie pojawia się znacznie częściej w wiadomościach e-mail, w porównaniu do usuwania

Wykresy korelacji są również interesujące. Aby utworzyć wykres:

  1. W polu Typ wybierz pozycję Korelacja
  2. Wybierz przycisk Wykonaj.
  3. Grzechota ostrzega, że zaleca maksymalnie 40 zmiennych. Wybierz pozycję Tak , aby wyświetlić wykres

Istnieją pewne interesujące korelacje, które pojawiają się. Na przykład technologia silnie koreluje z hp i laboratoriami. Jest również silnie skorelowany z 650 , ponieważ kod obszaru darczyńców zestawu danych wynosi 650.

Wartości liczbowe korelacji między wyrazami są dostępne w oknie Eksploruj. Warto na przykład zauważyć, że technologia jest negatywnie skorelowana z twoimi i pieniędzmi.

Grzechotanie może przekształcić zestaw danych w celu obsługi niektórych typowych problemów. Na przykład może ona zmieniać rozmiar funkcji, imputować brakujące wartości, obsługiwać wartości odstające i usuwać zmienne lub obserwacje, które mają brakujące dane. Grzechotanie może również identyfikować reguły skojarzenia między obserwacjami i zmiennymi. Ten przewodnik wprowadzający nie obejmuje tych kart.

Grzechotanie może również obsługiwać analizy klastra. Wykluczmy niektóre funkcje, aby ułatwić odczytywanie danych wyjściowych. Na karcie Dane wybierz pozycję Ignoruj obok każdej ze zmiennych, z wyjątkiem następujących 10 elementów:

  • 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

Wróć do karty Klaster. Wybierz pozycję KMeans, a następnie ustaw pozycję Liczba klastrów na 4. Wybierz polecenie Wykonaj. W oknie danych wyjściowych są wyświetlane wyniki. Jeden klaster ma wysokie częstotliwości george'a i hp i jest prawdopodobnie legalną firmową pocztą e-mail.

Aby utworzyć podstawowy model uczenia maszynowego drzewa decyzyjnego:

  1. Wybieranie karty Model
  2. W polu Typ wybierz pozycję Drzewo
  3. Wybierz pozycję Wykonaj , aby wyświetlić drzewo w formularzu tekstowym w oknie danych wyjściowych
  4. Wybierz przycisk Rysuj, aby wyświetlić wersję graficzną. Drzewo decyzyjne wygląda podobnie do drzewa uzyskanego wcześniej z rpart.

Grzechotanie może uruchamiać kilka metod uczenia maszynowego i szybko je oceniać. Jest to przydatna funkcja. Oto jak to zrobić:

  1. W polu Typ wybierz pozycję Wszystkie
  2. Wybierz przycisk Wykonaj.
  3. Po zakończeniu działania rattle można wybrać dowolną wartość typu , na przykład SVM, i wyświetlić wyniki
  4. Możesz również porównać wydajność modeli w zestawie weryfikacji z kartą Ocena . Na przykład wybór macierzy błędów pokazuje macierz pomyłek, ogólny błąd i średni błąd klasy dla każdego modelu w zestawie weryfikacji. Można również wykreślić krzywe ROC, uruchomić analizę poufności i wykonywać inne typy ocen modelu

Po zakończeniu tworzenia modeli wybierz kartę Dziennik , aby wyświetlić kod języka R uruchomiony podczas sesji. Możesz wybrać przycisk Eksportuj, aby go zapisać.

Uwaga

Bieżąca wersja rattle zawiera usterkę. Aby zmodyfikować skrypt lub użyć go do późniejszego powtórzenia kroków, musisz wstawić znak przed pozycją # Eksportuj ten dziennik ... w tekście dziennika.

PostgreSQL i SQuirreL SQL

Maszyna DSVM jest dostarczana z zainstalowaną bazą danych PostgreSQL. PostgreSQL to zaawansowana, relacyjna baza danych typu open source. W tej sekcji pokazano, jak załadować zestaw danych bazy spamu do bazy danych PostgreSQL, a następnie wysłać do niego zapytanie.

Przed załadowaniem danych należy zezwolić na uwierzytelnianie haseł z hosta lokalnego. W wierszu polecenia uruchom następujące polecenie:

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

W dolnej części pliku konfiguracji kilka wierszy zawiera szczegółowe informacje o dozwolonych połączeniach:

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

Zmień wiersz połączeń lokalnych IPv4, aby używać md5 zamiast ident, abyśmy mogli zalogować się przy użyciu nazwy użytkownika i hasła:

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

Następnie uruchom ponownie usługę PostgreSQL:

sudo systemctl restart postgresql

Aby uruchomić narzędzie psql (interaktywny terminal dla bazy danych PostgreSQL) jako wbudowanego użytkownika postgres, uruchom następujące polecenie:

sudo -u postgres psql

Utwórz nowe konto użytkownika przy użyciu nazwy użytkownika konta systemu Linux użytego do zalogowania. Utwórz hasło:

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

Zaloguj się do narzędzia psql:

psql

Zaimportuj dane do nowej bazy danych:

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

Teraz przyjrzyjmy się danym i uruchomimy kilka zapytań za pomocą języka SQuirreL SQL, graficznego narzędzia, które może wchodzić w interakcje z bazami danych za pośrednictwem sterownika JDBC.

Najpierw w menu Aplikacje otwórz plik SQuirreL SQL. Aby skonfigurować sterownik:

  1. Wybieranie sterowników widoku systemu Windows>
  2. Kliknij prawym przyciskiem myszy pozycję PostgreSQL i wybierz polecenie Modyfikuj sterownik
  3. Wybierz pozycję Dodaj dodatkową ścieżkę>klasy
  4. W polu Nazwa pliku wprowadź /usr/share/java/jdbcdrivers/postgresql-9.4.1208.jre6.jar
  5. Wybierz pozycję Otwórz
  6. Wybierz pozycję Wyświetl sterowniki. W polu Nazwa klasy wybierz pozycję org.postgresql.Driver, a następnie wybierz przycisk OK.

Aby skonfigurować połączenie z serwerem lokalnym:

  1. Wybierz pozycję Aliasy widoku systemu Windows>.
  2. Wybierz przycisk , + aby utworzyć nowy alias. W przypadku nowej nazwy aliasu wprowadź wartość Baza danych spamu
  3. W polu Sterownik wybierz pozycję PostgreSQL
  4. Ustaw adres URL na jdbc:postgresql://localhost/spam
  5. Wprowadzanie nazwy użytkownika i hasła
  6. Wybierz OK
  7. Aby otworzyć okno Połączenie ion, kliknij dwukrotnie alias bazy danych Spam
  8. Wybierz pozycję Połącz

Aby uruchomić kilka zapytań:

  1. Wybieranie karty SQL
  2. W polu zapytania w górnej części karty SQL wprowadź podstawowe zapytanie: na przykład SELECT * from data;
  3. Naciśnij klawisze Ctrl+Enter, aby uruchomić zapytanie. Domyślnie funkcja SQuirreL SQL zwraca pierwsze 100 wierszy z zapytania

Aby eksplorować te dane, możesz uruchomić wiele innych zapytań. Jak na przykład częstotliwość słowa różni się między spamem a hamem?

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

Jakie są cechy wiadomości e-mail, które często zawierają 3d?

SELECT * from data order by word_freq_3d desc;

Większość wiadomości e-mail, które mają duże wystąpienie 3d , są pozornym spamem. Te informacje mogą być przydatne podczas tworzenia modelu predykcyjnego do klasyfikowania wiadomości e-mail.

W przypadku uczenia maszynowego przy użyciu danych przechowywanych w bazie danych PostgreSQL biblioteka MADlib działa dobrze.

Azure Synapse Analytics (dawniej SQL DW)

Usługa Azure Synapse Analytics to oparta na chmurze, skalowana w poziomie baza danych, która może przetwarzać ogromne ilości danych, zarówno relacyjnych, jak i nierelacyjnych. Aby uzyskać więcej informacji, odwiedź stronę Co to jest usługa Azure Synapse Analytics?

Aby nawiązać połączenie z magazynem danych i utworzyć tabelę, uruchom to polecenie w wierszu polecenia:

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

W wierszu polecenia sqlcmd uruchom następujące polecenie:

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

Skopiuj dane za pomocą narzędzia 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"

Uwaga

Pobrany plik zawiera zakończenia linii w stylu systemu Windows. Narzędzie bcp oczekuje zakończenia linii w stylu unix. Użyj flagi -r, aby poinformować bcp o tym.

Następnie wykonaj zapytanie przy użyciu polecenia sqlcmd:

select top 10 spam, char_freq_dollar from spam;
GO

Możesz również wykonywać zapytania przy użyciu języka SQuirreL SQL. Wykonaj kroki podobne do postgreSQL przy użyciu sterownika JDBC programu SQL Server. Sterownik JDBC znajduje się w folderze /usr/share/java/jdbcdrivers/sqljdbc42.jar.