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 Aprowizowanie maszyny wirtualnej Ubuntu Data Science wyszczególnia 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 zbiór wiadomości e-mail oznaczonych jako spam lub niespam. 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ł przygotowany przy użyciu maszyny wirtualnej Linux DSVM w rozmiarze D2 v2. 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 korzystają z trwałej pamięci masowej Azure, więc ich dane pozostają zachowane nawet wtedy, gdy serwer zostanie ponownie wdrożony na skutek zmiany rozmiaru lub wyłączenia. 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. Na przykład, jeśli word_freq_make wynosi 1, to make stanowiło 1% wszystkich słów w wiadomości e-mail.
  • 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 oznacza największą długość ciągu wielkich liter.
  • capital_run_length_average jest średnią długością wszystkich sekwencji wielkich liter.
  • capital_run_length_total jest łączną długością wszystkich sekwencji wielkich liter.
  • 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. DSVM jest dostarczana z preinstalowanym środowiskiem CRAN R.

Aby uzyskać kopie przykładów kodu używanych w tym przewodniku, użyj narzędzia git, aby sklonować repozytorium Azure-Machine-Learning-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 na spam i nie-spam:

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 Ci pomóc tworzyć podobne wykresy i eksplorować dane w innych kolumnach.

Trenowanie i testowanie modelu uczenia maszynowego

Wytrenujmy kilka modeli uczenia maszynowego, aby zidentyfikować w zbiorze danych wiadomości e-mail będące spamem lub zwykłymi wiadomościami. 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ż model lasu losowego. Las losowy uczy wiele drzew decyzyjnych. Zwraca klasę, która jest wartością trybu klasyfikacji ze wszystkich poszczególnych drzew decyzyjnych. Zapewniają skuteczniejsze podejście do uczenia maszynowego, ponieważ ograniczają tendencję modelu drzewa decyzyjnego do nadmiernego dopasowania treningowego zbioru danych.

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 platformie udostępniono również zestaw szczegółowych instrukcji krok po kroku. Te samouczki pomagają szybko rozpocząć tworzenie aplikacji wykorzystujących uczenie głębokie w dziedzinach takich jak przetwarzanie obrazów, rozumienie tekstu i języka itp.

  • 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 w analizie dźwięku: W tym samouczku pokazano, jak wytrenować model uczenia głębokiego do wykrywania zdarzeń dźwiękowych na zbiorze danych odgłosów miejskich. 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

XGBoost zapewnia szybką i dokładną implementację drzew wzmacnianych.

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 można również wywołać z poziomu Pythona lub z wiersza poleceń.

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.

Wczytajmy część zbioru danych Spambase i sklasyfikujmy wiadomości e-mail przy użyciu maszyn wektorów nośnych w bibliotece 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 Learning, 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 w systemie DSVM zawiera 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. Logujesz się za pomocą lokalnej nazwy użytkownika systemu Linux i hasła pod adresem https://<nazwa DNS maszyny DSVM lub adres IP>:8000/. Wszystkie pliki konfiguracji jupyterHub można znaleźć w witrynie /etc/jupyterhub.

Uwaga

Aby użyć menedżera pakietów Python (za pomocą polecenia pip) z poziomu notesu Jupyter Notebook uruchomionego w bieżącym jądrze, użyj następującego polecenia w komórce kodu:

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

Aby użyć instalatora Conda (za pomocą polecenia conda) z poziomu notatnika Jupyter uruchomionego w bieżącym jądrze, użyj następującego 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 notatników:

Uwaga

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

Rattle

Możesz użyć graficznego narzędzia R Rattle (R Analytical Tool To Learn Easily) do eksploracji danych. Rattle ma intuicyjny interfejs, który ułatwia ładowanie, eksplorowanie i przekształcanie danych oraz tworzenie i ocenianie modeli. Rattle: graficzny interfejs użytkownika do eksploracji danych dla R zawiera samouczek krok po kroku prezentujący funkcje programu Rattle.

Wykonaj 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.

Rattle używa interfejsu opartego na zakładkach. Większość kart odpowiada krokom w procesie pracy zespołu nad analizą danych, na przykład ładowaniu danych lub ich eksploracji. 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. Rattle poprawnie zidentyfikował kolumnę spam jako kolumnę docelową. Wybierz kolumnę spam, a następnie ustaw Docelowy typ danych na Kategoryczny

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. Wybierz Dystrybucje
  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 wykresu, gdzie słowo you wyraźnie pojawia się znacznie częściej w wiadomościach e-mail niż remove

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

  1. W polu Typ wybierz pozycję Korelacja
  2. Wybierz przycisk Wykonaj.
  3. Rattle ostrzega, że zalecana maksymalna liczba zmiennych to 40. 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.

Rattle może przekształcać zbiór danych, aby poradzić sobie z niektórymi typowymi problemami. 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. Rattle może również identyfikować reguły asocjacyjne między obserwacjami a zmiennymi. Ten przewodnik wprowadzający nie obejmuje tych kart.

Rattle może również przeprowadzać analizy skupień. 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 cechuje się częstym występowaniem george i hp i prawdopodobnie jest prawdziwą wiadomością biznesową.

Aby zbudować podstawowy model uczenia maszynowego w postaci drzewa decyzyjnego:

  1. Wybierz kartę 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, które wcześniej uzyskaliśmy za pomocą rpart.

Rattle może uruchomić kilka metod uczenia maszynowego i szybko je ocenić. 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 programu Rattle można wybrać dowolną wartość Typ, na przykład SVM, i wyświetlić wyniki
  4. Możesz również porównać działanie modeli na zbiorze walidacyjnym na karcie Ocena. Na przykład opcja Macierz błędów pokazuje macierz pomyłek, błąd ogólny oraz średni błąd klasy dla każdego modelu na zbiorze walidacyjnym. Można również wykreślać krzywe ROC, przeprowadzać analizę wrażliwości i wykonywać inne rodzaje oceny modelu

Gdy skończysz budować modele, wybierz kartę Dziennik, aby wyświetlić kod w języku R, który program Rattle uruchomił 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ć psql (interaktywny terminal PostgreSQL) jako wbudowany użytkownik 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. Wybierz Windows>Wyświetl sterowniki
  2. Kliknij prawym przyciskiem myszy pozycję PostgreSQL i wybierz polecenie Modyfikuj sterownik
  3. Wybierz Extra Class Path>Dodaj
  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ę Windows>Wyświetl aliasy.
  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, kliknij dwukrotnie alias Baza spamu
  8. Wybierz pozycję Połącz

Aby uruchomić kilka zapytań:

  1. Wybierz kartę SQL
  2. W polu zapytania w górnej części karty SQL wprowadź podstawowe zapytanie: na przykład SELECT * from data;
  3. Naciśnij 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 różni się częstotliwość występowania słowa make 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.