Azure'da Ubuntu Veri Bilimi Sanal Makinesi ile veri bilimi

Bu izlenecek yol, Ubuntu Veri Bilimi Sanal Makinesi (DSVM) kullanarak çeşitli yaygın veri bilimi görevlerinin nasıl tamamlanacağını gösterir. Ubuntu DSVM, Azure'da bulunan ve veri analizi ve makine öğrenmesi için yaygın olarak kullanılan bir araç koleksiyonuyla önceden yüklenmiş bir sanal makine görüntüsüdür. Önemli yazılım bileşenleri Ubuntu Veri Bilimi Sanal Makinesi sağlama bölümünde listelenir. DSVM görüntüsü, her bir aracı ayrı ayrı yükleyip yapılandırmak zorunda kalmadan dakikalar içinde veri bilimi yapmaya başlamayı kolaylaştırır. Gerekirse DSVM'nin ölçeğini kolayca artırabilir ve kullanımda olmadığında durdurabilirsiniz. DSVM kaynağı hem esnek hem de uygun maliyetlidir.

Bu kılavuzda spambase veri kümesini analiz edeceğiz. Spambase, istenmeyen posta veya istenmeyen posta (istenmeyen posta değil) olarak işaretlenmiş bir dizi e-postadır. Spambase ayrıca e-postaların içeriğiyle ilgili bazı istatistikler içerir. daha sonra izlenecek yolda istatistikler hakkında konuşacağız.

Önkoşullar

Linux DSVM'yi kullanabilmeniz için önce aşağıdaki önkoşullara sahip olmanız gerekir:

spambase veri kümesini indirme

spambase veri kümesi, 4.601 örnek içeren nispeten küçük bir veri kümesidir. Veri kümesi, kaynak gereksinimlerini mütevazı tuttuğundan DSVM'nin bazı temel özelliklerini göstermek için uygun bir boyuta sahiptir.

Not

Bu kılavuz, D2 v2 boyutlu Linux DSVM kullanılarak oluşturulmuştur. Bu kılavuzda gösterildiği gibi yordamları tamamlamak için bu boyutta bir DSVM kullanabilirsiniz.

Daha fazla depolama alanına ihtiyacınız varsa, ek diskler oluşturabilir ve bunları DSVM'nize ekleyebilirsiniz. Diskler kalıcı Azure depolama kullanır, bu nedenle sunucu yeniden boyutlandırma nedeniyle yeniden sağlanmış olsa veya kapatılsa bile verileri korunur. Disk eklemek ve DSVM'nize eklemek için Linux VM'ye disk ekleme adımlarını tamamlayın. Disk ekleme adımları, DSVM'de zaten yüklü olan Azure CLI'yı kullanır. Adımları tamamen DSVM'nin kendisinden tamamlayabilirsiniz. Depolamayı artırmaya yönelik bir diğer seçenek de Azure Dosyalar kullanmaktır.

Verileri indirmek için bir terminal penceresi açın ve şu komutu çalıştırın:

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

İndirilen dosyanın üst bilgi satırı yok. Şimdi üst bilgisi olan başka bir dosya oluşturalım. Uygun üst bilgilerle bir dosya oluşturmak için şu komutu çalıştırın:

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

Ardından, iki dosyayı birleştirin:

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

Veri kümesinde her e-posta için çeşitli istatistik türleri vardır:

  • word_freq_WORD gibi sütunlar, e-postada WORD ile eşleşen sözcüklerin yüzdesini gösterir. Örneğin, word_freq_make1 ise, e-postadaki tüm sözcüklerin %1'i yapılmıştır.
  • char_freq_CHAR gibi sütunlar, e-postadaki CHAR olan tüm karakterlerin yüzdesini gösterir.
  • capital_run_length_longest , büyük harf dizisinin en uzun uzunluğudur.
  • capital_run_length_average , tüm büyük harf dizilerinin ortalama uzunluğudur.
  • capital_run_length_total , tüm büyük harf dizilerinin toplam uzunluğudur.
  • istenmeyen posta , e-postanın istenmeyen posta olarak kabul edilip edilmediğini gösterir (1 = istenmeyen posta, 0 = istenmeyen posta değil).

R Open kullanarak veri kümesini keşfetme

Şimdi verileri inceleyelim ve R kullanarak bazı temel makine öğrenmesi gerçekleştirelim. DSVM, CRAN R önceden yüklenmiş olarak gelir.

Bu kılavuzda kullanılan kod örneklerinin kopyalarını almak için Git'i kullanarak Azure-Machine-Learning-Data-Science deposunu kopyalayın. Git, DSVM'ye önceden yüklenmiştir. Git komut satırında şunu çalıştırın:

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

Bir terminal penceresi açın ve R etkileşimli konsolunda yeni bir R oturumu başlatın. Verileri içeri aktarmak ve ortamı ayarlamak için:

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

Her sütunla ilgili özet istatistikleri görmek için:

summary(data)

Verilerin farklı bir görünümü için:

str(data)

Bu görünümde her değişkenin türü ve veri kümesindeki ilk birkaç değer gösterilir.

İstenmeyen posta sütunu tamsayı olarak okundu, ancak aslında kategorik bir değişkendir (veya faktör). Türünü ayarlamak için:

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

Keşif analizi yapmak için, DSVM'ye önceden yüklenmiş R için popüler bir grafik kitaplığı olan ggplot2 paketini kullanın. Daha önce görüntülenen özet verilerine bağlı olarak ünlem işareti karakterinin sıklığına ilişkin özet istatistiklerimiz vardır. Şimdi aşağıdaki komutları çalıştırarak bu sıklıkları buraya çizelim:

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

Sıfır çubuğu çizimi eğdiğinden, bunu ortadan kaldıralım:

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

1'in üzerinde ilginç görünen, önemsiz bir yoğunluk vardır. Şimdi yalnızca şu verilere bakalım:

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

Ardından, istenmeyen postaya ve ham'a göre bölün:

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

Bu örnekler benzer çizimler yapmanıza ve diğer sütunlardaki verileri araştırmanıza yardımcı olmalıdır.

Makine öğrenmesi modelini eğitip test etme

Şimdi veri kümesindeki e-postaları istenmeyen posta veya ham içeren olarak sınıflandırmak için birkaç makine öğrenmesi modeli eğitelim. Bu bölümde, bir karar ağacı modeli ve rastgele bir orman modeli eğiteceğiz. Ardından tahminlerin doğruluğunu test edeceğiz.

Not

Aşağıdaki kodda kullanılan rpart (Özyinelemeli Bölümleme ve Regresyon Ağaçları) paketi DSVM'de zaten yüklüdür.

İlk olarak veri kümesini eğitim kümelerine ve test kümelerine ayıralım:

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

Ardından, e-postaları sınıflandırmak için bir karar ağacı oluşturun:

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

Sonuç şu şekildedir:

Oluşturulan karar ağacının diyagramı

Eğitim kümesinde ne kadar iyi performans sergilediğini belirlemek için aşağıdaki kodu kullanın:

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

Test kümesinde ne kadar iyi performans sergilediğini belirlemek için:

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

Şimdi rastgele bir orman modeli de deneyelim. Rastgele ormanlar çok sayıda karar ağacını eğitip tek tek tüm karar ağaçlarından sınıflandırmaların modu olan bir sınıf oluşturur. Karar ağacı modelinin eğitim veri kümesine fazla sığdırma eğilimini düzelttiğinden daha güçlü bir makine öğrenmesi yaklaşımı sağlarlar.

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

Derin öğrenme öğreticileri ve izlenecek yollar

Çerçeve tabanlı örneklere ek olarak, bir dizi kapsamlı izlenecek yol da sağlanır. Bu kılavuzlar, görüntü ve metin/dil anlama gibi etki alanlarında derin öğrenme uygulamaları geliştirmeye hızlı bir başlangıç yapma konusunda yardımcı olur.

  • Sinir ağlarını farklı çerçevelerde çalıştırma: Kodu bir çerçeveden diğerine geçirmeyi gösteren kapsamlı bir kılavuz. Ayrıca çerçeveler arasında model ve çalışma zamanı performansını karşılaştırmayı da gösterir.

  • Görüntülerdeki ürünleri algılamak için uçtan uca bir çözüm oluşturmaya yönelik nasıl yapılır kılavuzu: Görüntü algılama, görüntülerdeki nesneleri bulup sınıflandırabilen bir tekniktir. Bu teknoloji, gerçek hayattaki birçok iş alanında büyük ödüller getirme potansiyeline sahiptir. Örneğin, perakendeciler müşterinin raftan hangi ürünü aldığını belirlemek için bu tekniği kullanabilir. Bu bilgiler de mağazaların ürün envanterlerini yönetmelerine yardımcı olur.

  • Ses için derin öğrenme: Bu öğreticide , kentsel sesler veri kümesinde ses olay algılaması için bir derin öğrenme modelinin nasıl eğitilmiş olduğu gösterilmektedir. Öğreticide ses verileriyle çalışma hakkında genel bir bakış sağlanır.

  • Metin belgelerinin sınıflandırılması: Bu kılavuzda, iki farklı sinir ağı mimarisinin nasıl derlenip eğitilmeye başlanacağını gösterilmektedir: Hiyerarşik Dikkat Ağı ve Uzun Kısa Süreli Bellek (LSTM). Bu sinir ağları, metin belgelerini sınıflandırmak için derin öğrenme için Keras API'sini kullanır. Keras, en popüler üç derin öğrenme çerçevesinin ön ucudur: Microsoft Cognitive Toolkit, TensorFlow ve Theano.

Diğer araçlar

Kalan bölümlerde Linux DSVM'de yüklü olan araçlardan bazılarının nasıl kullanılacağı gösterilir. Bu araçları ele alıyoruz:

  • XGBoost
  • Python
  • JupyterHub
  • Rattle
  • PostgreSQL ve SQuirreL SQL
  • Azure Synapse Analytics (eski adı SQL DW)

XGBoost

XGBoost hızlı ve doğru bir artırılmış ağaç uygulaması sağlar.

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, Python'dan veya komut satırından da çağrı yapabilir.

Python

Python geliştirmesi için DSVM'de Anaconda Python dağıtımları 3.5 ve 2.7 yüklenir.

Not

Anaconda dağılımı Conda'yı içerir. Conda kullanarak farklı sürümlere veya paketlere sahip özel Python ortamları oluşturabilirsiniz.

İstenmeyen posta tabanı veri kümelerinden bazılarını okuyalım ve Scikit-learn'deki destek vektör makineleriyle e-postaları sınıflandıralım:

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)

Tahminde bulunmak için:

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

Azure Machine Learning uç noktasını yayımlamayı göstermek için daha temel bir model oluşturalım. R modelini daha önce yayımladığımızda kullandığımız üç değişkeni kullanacağız:

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

JupyterHub

DSVM'deki Anaconda dağıtımı Python, R veya Julia kodunu ve analizini paylaşmak için platformlar arası bir ortam olan Jupyter Notebook ile birlikte gelir. Jupyter Notebook JupyterHub üzerinden erişilir. yerel Linux kullanıcı adınızı ve parolanızı kullanarak https://< DSVM DNS adı veya IP adresi>:8000/ adresinde oturum açarsınız. JupyterHub için tüm yapılandırma dosyaları /etc/jupyterhub içinde bulunur.

Not

Geçerli çekirdekteki bir Jupyter Notebook Python Paket Yöneticisi'ni (komutu aracılığıylapip) kullanmak için kod hücresinde şu komutu kullanın:

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

Geçerli çekirdekteki bir Jupyter Notebook Conda yükleyicisini conda (komutu aracılığıyla) kullanmak için, bu komutu bir kod hücresinde kullanın:

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

DSVM'de birkaç örnek not defteri zaten yüklüdür:

Not

Julia dili, Linux DSVM'de komut satırından da kullanılabilir.

Rattle

Rattle (RAnalytical Tool To Learn Easily), veri madenciliğine yönelik bir grafik R aracıdır. Rattle, verileri yüklemeyi, keşfetmeyi ve dönüştürmeyi, model oluşturmayı ve değerlendirmeyi kolaylaştıran sezgisel bir arayüze sahiptir. Rattle: R için Veri Madenciliği GUI'si , Rattle'ın özelliklerini gösteren bir kılavuz sağlar.

Şu komutları çalıştırarak Rattle'ı yükleyin ve başlatın:

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

Not

Rattle'ı DSVM'ye yüklemeniz gerekmez. Ancak Rattle açıldığında ek paketler yüklemeniz istenebilir.

Rattle, sekme tabanlı bir arabirim kullanır. Sekmelerin çoğu, veri yükleme veya verileri keşfetme gibi Takım Veri Bilimi Süreci'ndeki adımlara karşılık gelir. Veri bilimi süreci sekmeler arasında soldan sağa doğru akar. Son sekme, Rattle tarafından çalıştırılan R komutlarının günlüğünü içerir.

Veri kümesini yüklemek ve yapılandırmak için:

  1. Dosyayı yüklemek için Veri sekmesini seçin.
  2. Dosyaadı'nın yanındaki seçiciyi seçin ve ardından spambaseHeaders.data öğesini seçin.
  3. Dosyayı yüklemek için. Yürüt'e tıklayın. Tanımlanan veri türü dahil olmak üzere her sütunun özetini görmeniz gerekir; bu bir giriş, hedef veya başka bir değişken türü olabilir; ve benzersiz değerlerin sayısı.
  4. Rattle istenmeyen posta sütununu hedef olarak doğru şekilde tanımladı. İstenmeyen posta sütununu seçin ve Hedef Veri Türü'nüKategorik olarak ayarlayın.

Verileri keşfetmek için:

  1. Araştır sekmesini seçin.
  2. Değişken türleri ve bazı özet istatistikleri hakkındaki bilgileri görmek için Özet>Yürütme'yi seçin.
  3. Her değişkenle ilgili diğer istatistik türlerini görüntülemek için Açıklayın veya Temel Bilgiler gibi diğer seçenekleri belirleyin.

Ayrıca, içgörülere yönelik çizimler oluşturmak için Keşfet sekmesini de kullanabilirsiniz. Verilerin histogramını çizmek için:

  1. Dağıtımlar'ı seçin.
  2. word_freq_remove ve word_freq_you için Histogram'ı seçin.
  3. Yürüt’ü seçin. Her iki yoğunluk çizimini de tek bir grafik penceresinde görmeniz gerekir. Burada, e-postalarda kaldırılmaktan çok daha sık göründüğün açıktır.

Korelasyon çizimleri de ilginçtir. Çizim oluşturmak için:

  1. Tür için Bağıntı'yı seçin.
  2. Yürüt’ü seçin.
  3. Rattle, en fazla 40 değişken önerdiği konusunda sizi uyarır. Çizimi görüntülemek için Evet'i seçin.

Ortaya çıkan bazı ilginç bağıntılar vardır: teknolojininHP ve laboratuvarlarla güçlü bir şekilde bağıntılı olması, örneğin. Veri kümesi bağışçılarının alan kodu 650 olduğundan 650 ile de güçlü bir bağıntıya sahiptir.

Sözcükler arasındaki bağıntıların sayısal değerleri Araştır penceresinde bulunur. Örneğin, teknolojinin sizin ve paranızla olumsuz bağıntılı olduğunu unutmamak ilginçtir.

Rattle, bazı yaygın sorunları işlemek için veri kümesini dönüştürebilir. Örneğin özellikleri yeniden ölçekleyebilir, eksik değerleri açabilir, aykırı değerleri işleyebilir ve eksik veri içeren değişkenleri veya gözlemleri kaldırabilir. Çıngıraklı, gözlemler ve değişkenler arasındaki ilişkilendirme kurallarını da tanımlayabilir. Bu sekmeler bu giriş niteliğindeki kılavuzda ele alınmıyor.

Rattle, küme analizini de çalıştırabilir. Çıkışın daha kolay okunmasını sağlamak için bazı özellikleri hariç tutalım. Veri sekmesinde, şu 10 öğe dışında değişkenlerin her birinin yanındaki Yoksay'ı seçin:

  • 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
  • istenmeyen posta

Küme sekmesine dönün. KMeans'ı seçin ve küme sayısı'yı4 olarak ayarlayın. Yürüt’ü seçin. Sonuçlar çıkış penceresinde görüntülenir. Bir kümede yüksek sıklıkta george ve hp bulunur ve büyük olasılıkla meşru bir iş e-postasıdır.

Temel bir karar ağacı makine öğrenmesi modeli oluşturmak için:

  1. Model sekmesini seçin,
  2. Tür için Ağaç'ı seçin.
  3. Ağacı çıkış penceresinde metin biçiminde görüntülemek için Yürüt'e tıklayın.
  4. Grafik sürümünü görüntülemek için Çiz düğmesini seçin. Karar ağacı, daha önce rpart kullanarak elde ettiğimiz ağaca benzer.

Rattle'ın yararlı özelliklerinden biri, çeşitli makine öğrenmesi yöntemlerini çalıştırabilmesi ve bunları hızlı bir şekilde değerlendirebilmesidir. Adımlar şunlardır:

  1. Tür olarak Tümü'nü seçin.
  2. Yürüt’ü seçin.
  3. Rattle çalıştırmayı bitirdiğinde, SVM gibi herhangi bir Tür değerini seçebilir ve sonuçları görüntüleyebilirsiniz.
  4. Ayrıca Değerlendir sekmesini kullanarak doğrulama kümesindeki modellerin performansını karşılaştırabilirsiniz. Örneğin, Hata Matrisi seçiminde doğrulama kümesindeki her model için karışıklık matrisi, genel hata ve ortalama sınıf hatası gösterilir. Ayrıca ROC eğrilerini çizebilir, duyarlılık analizi çalıştırabilir ve diğer model değerlendirme türlerini yapabilirsiniz.

Modelleri derlemeyi bitirdiğinizde Oturumunuz sırasında Rattle tarafından çalıştırılan R kodunu görüntülemek için Günlük sekmesini seçin. Dışarı Aktar düğmesini seçerek kaydedebilirsiniz.

Not

Rattle'ın geçerli sürümünde bir hata var. Betiği değiştirmek veya daha sonra adımlarınızı yinelemek için kullanmak için, günlüğün metnine Bu günlüğü dışarı aktar ... öğesinin önüne bir # karakter eklemeniz gerekir.

PostgreSQL ve SQuirreL SQL

DSVM, PostgreSQL yüklü olarak gelir. PostgreSQL karmaşık, açık kaynak ilişkisel bir veritabanıdır. Bu bölümde spambase veri kümesini PostgreSQL'e yükleme ve sorgulama işlemleri gösterilmektedir.

Verileri yükleyebilmeniz için önce localhost'tan parola kimlik doğrulamasına izin vermelisiniz. Bir komut isteminde şunu çalıştırın:

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

Yapılandırma dosyasının alt kısmında, izin verilen bağlantıları ayrıntılı olarak inceleyen birkaç satır bulunur:

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

Kullanıcı adı ve parola kullanarak oturum açabilmemiz için IPv4 yerel bağlantılar satırını girinti yerine md5 kullanacak şekilde değiştirin:

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

Ardından PostgreSQL hizmetini yeniden başlatın:

sudo systemctl restart postgresql

Yerleşik postgres kullanıcısı olarak psql'yi (PostgreSQL için etkileşimli bir terminal) başlatmak için şu komutu çalıştırın:

sudo -u postgres psql

Oturum açmak için kullandığınız Linux hesabının kullanıcı adını kullanarak yeni bir kullanıcı hesabı oluşturun. Parola oluşturma:

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

psql'de oturum açın:

psql

Verileri yeni bir veritabanına aktarın:

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

Şimdi verileri keşfedelim ve JDBC sürücüsü aracılığıyla veritabanlarıyla etkileşime geçmek için kullanabileceğiniz bir grafik aracı olan SQuirreL SQL'i kullanarak bazı sorgular çalıştıralım.

Başlamak için Uygulamalar menüsünde SQuirreL SQL'i açın. Sürücüyü ayarlamak için:

  1. Windows>Görünüm Sürücüleri'ne tıklayın.
  2. PostgreSQL'e sağ tıklayın ve Sürücüyü Değiştir'i seçin.
  3. Ek Sınıf Yolu>Ekle'yi seçin.
  4. Dosya Adı alanına /usr/share/java/jdbcdrivers/postgresql-9.4.1208.jre6.jar girin.
  5. ’ı seçin.
  6. Sürücüleri Listele'yi seçin. Sınıf Adı için org.postgresql.Driver öğesini ve ardından Tamam'ı seçin.

Yerel sunucuya bağlantıyı ayarlamak için:

  1. Windows>Görünümü Diğer Adlar'ı seçin.
  2. + Yeni bir diğer ad oluşturmak için düğmeyi seçin. Yeni diğer ad için İstenmeyen posta veritabanı girin.
  3. Sürücü için PostgreSQL'i seçin.
  4. URL'yi jdbc:postgresql://localhost/spam olarak ayarlayın.
  5. Kullanıcı adınızı ve parolanızı girin.
  6. Tamam’ı seçin.
  7. Bağlantı penceresini açmak için İstenmeyen posta veritabanı diğer adına çift tıklayın.
  8. Bağlan’ı seçin.

Bazı sorguları çalıştırmak için:

  1. SQL sekmesini seçin.
  2. SQL sekmesinin en üstündeki sorgu kutusuna gibi SELECT * from data;temel bir sorgu girin.
  3. Sorguyu çalıştırmak için Ctrl+Enter tuşlarına basın. Varsayılan olarak, SQuirreL SQL sorgunuzdan ilk 100 satırı döndürür.

Bu verileri keşfetmek için çalıştırabileceğiniz daha birçok sorgu vardır. Örneğin , sözcüğün sıklıkları istenmeyen posta ve ham arasında nasıl farklılık gösterir?

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

Veya sık sık 3b içeren e-postanın özellikleri nelerdir?

SELECT * from data order by word_freq_3d desc;

3b'nin yüksek oluşumuna sahip çoğu e-posta istenmeyen postadır. Bu bilgiler, e-postaları sınıflandırmak için tahmine dayalı bir model oluşturmak için yararlı olabilir.

PostgreSQL veritabanında depolanan verileri kullanarak makine öğrenimi yapmak istiyorsanız MADlib kullanmayı göz önünde bulundurun.

Azure Synapse Analytics (eski adı SQL DW)

Azure Synapse Analytics, hem ilişkisel hem de ilişkisel olmayan büyük hacimlerdeki verileri işleyebilen bulut tabanlı, ölçeği genişleten bir veritabanıdır. Daha fazla bilgi için bkz. Azure Synapse Analytics nedir?

Veri ambarı'na bağlanmak ve tabloyu oluşturmak için bir komut isteminden aşağıdaki komutu çalıştırın:

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

sqlcmd isteminde şu komutu çalıştırın:

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

bcp kullanarak verileri kopyalayın:

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"

Not

İndirilen dosya Windows stili satır sonları içeriyor. bcp aracı Unix stili çizgi sonları bekler. bcp'ye söylemek için -r bayrağını kullanın.

Ardından sqlcmd kullanarak sorgulayın:

select top 10 spam, char_freq_dollar from spam;
GO

SQuirreL SQL kullanarak da sorgulayabilirsiniz. SQL Server JDBC sürücüsünü kullanarak PostgreSQL'e benzer adımları izleyin. JDBC sürücüsü /usr/share/java/jdbcdrivers/sqljdbc42.jar klasöründedir.