Aracılığıyla paylaş


Azure'da Ubuntu Veri Bilimi Sanal Makinesi ile veri bilimi

Bu kılavuzda Ubuntu Veri Bilimi Sanal Makinesi (DSVM) ile çeşitli yaygın veri bilimi görevlerinin nasıl tamamlandığı açıklanmaktadır. Ubuntu DSVM, veri analizi ve makine öğrenmesi için yaygın olarak kullanılan önceden yüklenmiş bir araç koleksiyonuyla Azure'da kullanılabilen bir sanal makine görüntüsüdür. Ubuntu sağlama Veri Bilimi Sanal Makinesi kaynağı, temel yazılım bileşenlerini öğelendirir. DSVM görüntüsü, yalnızca birkaç dakika içinde veri bilimiyle çalışmaya başlamayı kolaylaştırır ve araçların her birini ayrı ayrı yükleme ve yapılandırma gereğini önler. Gerekirse DSVM'nin ölçeğini kolayca artırabilir ve kullanılmadığında durdurabilirsiniz. DSVM kaynağı hem esnek hem de uygun maliyetlidir.

Bu kılavuzda spambase veri kümesini analiz edeceğiz. Spambase, istenmeyen posta veya ham (istenmeyen posta değil) olarak işaretlenen bir dizi e-postadır. Spambase ayrıca e-posta içeriğiyle ilgili bazı istatistikler içerir. daha sonra izlenecek yolda istatistikleri ele alacağız.

Önkoşullar

Linux DSVM'yi kullanabilmeniz için önce şu önkoşulları karşılamanız gerekir:

spambase veri kümesini indirme

spambase veri kümesi, 4.601 örneği içeren oldukça küçük bir veri kümesidir. Bu kaynağın kullanışlı, yönetilebilir boyutu, mütevazı kaynak gereksinimleri nedeniyle DSVM'nin bazı temel özelliklerini göstermeyi kolaylaştırır.

Not

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

Daha fazla depolama alanı için daha fazla disk oluşturabilir ve bunları DSVM'nize ekleyebilirsiniz. Diskler kalıcı Azure depolama kullanır, bu nedenle sunucu yeniden boyutlandırıldığından veya kapatıldığından yeniden sağlanmış olsa bile verileri korunur. Disk eklemek ve DSVM'nize eklemek için Linux VM'sine disk ekleme'deki adımları tamamlayın. Disk ekleme adımları, DSVM'de zaten yüklü olan Azure CLI'yi kullanır. Adımları tamamen DSVM'nin kendisinden tamamlayabilirsiniz. Depolamayı artırmaya yönelik başka bir seçenek olarak Azure Dosyalar kullanabilirsiniz.

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ı bir araya getirin:

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

Veri kümesinin 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_make 1 ise, e-postadaki tüm sözcüklerin %1'i olur.
  • 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 bazı temel makine öğrenmesi yapmak için R'yi kullanalım. 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 şunu çalıştırın:

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

Bu kod örneği, her sütunla ilgili özet istatistikleri gösterir:

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 için R için popüler bir grafik kitaplığı olan ggplot2 paketini kullanın. ggplot2 paketi DSVM'ye önceden yüklenmiştir. Daha önce görüntülenen özet verilere bağlı olarak ünlem işareti karakterinin sıklığına ilişkin özet istatistiklerimiz vardır. Bu sıklıkları buraya çizmek için şu komutları çalıştırın:

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

Sıfır çubuğu çizimi çarpıttığı için 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. Şimdi yalnızca bu 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 keşfetmenize yardımcı olmalıdır.

Makine öğrenmesi modelini eğitma ve test etme

Şimdi veri kümesindeki istenmeyen posta veya ham içeren e-postaları tanımlamak 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 bölelim:

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ı gösteren diyagram.

Eğitim kümesinde ne kadar iyi performans sergilediğini belirlemek için bu kod örneğini 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 şu kodu çalıştırın:

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 bir orman birden çok karar ağacı eğiter. Tek tek tüm karar ağaçlarından sınıflandırmaların mod değeri olan bir sınıf verir. Karar ağacı modelinin bir eğitim veri kümesini fazla sığdırma eğilimini doğruladıkları için daha güçlü bir makine öğrenmesi yaklaşımı sağlar.

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, resim, metin dili anlama vb. etki alanlarında derin öğrenme uygulamaları geliştirmenize hemen başlamanıza yardımcı olur.

  • Sinir ağlarını farklı çerçevelerde çalıştırma: Kodun bir çerçeveden diğerine nasıl geçirildiğini 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 bir nasıl yapılır kılavuzu: Görüntü algılama tekniği, görüntülerdeki nesneleri bulabilir ve sınıflandırabilir. Bu teknoloji, gerçek hayattaki birçok iş alanında büyük ödüller sağlayabilir. Örneğin, perakendeciler müşterinin raftan hangi ürünü seçtiğini 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ırması: Bu izlenecek yol, hiyerarşik dikkat ağı ve Uzun Kısa Süreli Bellek (LSTM) olmak üzere iki farklı sinir ağı mimarisinin nasıl derlenip eğitilme işlemini göstermektedir. Metin belgelerini sınıflandırmak için bu sinir ağları derin öğrenme için Keras API'sini kullanır. Keras, en popüler üç derin öğrenme çerçevesinin ön ucudur: Microsoft Bilişsel Araç Seti, TensorFlow ve Theano.

Diğer araçlar

Kalan bölümlerde Linux DSVM'ye önceden yüklenmiş bazı araçların nasıl kullanılacağı gösterilmektedir. Şu araçları inceleyeceğiz:

  • 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 Anaconda Python dağıtımları 3.5 ve 2.7 DSVM'ye önceden yüklenmiştir.

Not

Anaconda dağılımı Conda'yı içerir. Conda'nın içinde farklı sürümleri veya paketleri yüklü özel Python ortamları oluşturmak için kullanabilirsiniz.

Spambase veri kümelerinden bazılarını okuyalım ve Scikit-learn'de 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 kullanırı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ı bir Jupyter Notebook ile birlikte gelir. Bu kaynak Python, R veya Julia kodunu ve analizini paylaşmak için platformlar arası bir ortamdır. Jupyter Notebook'a JupyterHub üzerinden erişilir. https://< DSVM DNS adı veya IP adresi>:8000/ adresinde yerel Linux kullanıcı adınızı ve parolanızı kullanarak oturum açarsınız. Tüm JupyterHub yapılandırma dosyalarını /etc/jupyterhub'da bulabilirsiniz.

Not

Geçerli çekirdekte bulunan bir Jupyter Notebook'tan Python Paket Yöneticisi (komutuylapip) kullanmak için kod hücresinde şu komutu kullanın:

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

Geçerli çekirdekte bulunan bir Jupyter Not Defteri'nden Conda yükleyicisini (komutuyla conda ) kullanmak için kod hücresinde şu komutu 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

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

Rattle'ı yüklemek ve başlatmak için şu komutları çalıştırın:

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

Not

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

Rattle, sekme tabanlı bir arabirim kullanır. Sekmelerin çoğu, verileri yükleme veya verileri keşfetme gibi Ekip Veri Bilimi İşlemi'ndeki adımlara karşılık gelir. Veri bilimi süreci, sekmeler aracılığıyla soldan sağa doğru akar. Son sekmede Rattle'ın çalıştırmış olduğu R komutlarının günlüğü yer alır.

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ü, giriş, hedef veya başka bir değişken türü ve benzersiz değerlerin sayısı dahil olmak üzere her sütunun özetini görmeniz gerekir
  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örüntülemek 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çıkla veya Temel Bilgiler gibi diğer seçenekleri belirleyin.

Ayrıca, içgörüye sahip ç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 e-postalarda açıkça gördüğünüz sözcüğün kaldırılmaya kıyasla çok daha sık göründüğü tek bir grafik penceresinde görmeniz gerekir

Bağıntı çizimleri de ilginçtir. Çizim oluşturmak için:

  1. Tür için Bağıntı'yı seçin
  2. Çalıştır’ı 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

Bazı ilginç bağıntılar ortaya çıkıyor. Örneğin teknoloji, HP ve laboratuvarlarla güçlü bir şekilde ilişkilendirir. Ayrıca veri kümesi bağışçılarının alan kodu 650 olduğundan 650 ile de bağıntılı olur.

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. Rattle, gözlemler ve değişkenler arasındaki ilişkilendirme kurallarını da belirleyebilir. Bu giriş niteliğindeki kılavuzda bu sekmeler ele alınmıyor.

Rattle, küme analizlerini de işleyebilir. Çı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
  • spam

Küme sekmesine dönün. KMeans'ı seçin ve küme sayısı'nı 4 olarak ayarlayın. Yürüt'ü seçin. Çıkış penceresinde sonuçlar gösterilir. Kümelerden birinde george ve hp sıklıkları yüksektir ve büyük olasılıkla yasal 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ı rpart ile daha önce elde ettiğimiz ağaca benzer.

Rattle çeşitli makine öğrenmesi yöntemleri çalıştırabilir ve bunları hızla değerlendirebilir. Bu yararlı bir özelliktir. Bu işlemi gerçekleştirmek için aşağıdakileri yapın:

  1. Tür için Tümü'nü seçin
  2. Çalıştır’ı seçin
  3. Rattle'ın çalışması tamamlandığında, SVM gibi herhangi bir Tür değeri seçebilir ve sonuçları görüntüleyebilirsiniz
  4. Ayrıca, doğrulama kümesindeki modellerin performansını Değerlendir sekmesiyle karşılaştırabilirsiniz. Örneğin Hata Matrisi seçimi, doğrulama kümesindeki her model için karışıklık matrisini, genel hatayı ve ortalama sınıf hatasını gösterir. Ayrıca ROC eğrileri çizebilir, duyarlılık analizi çalıştırabilir ve diğer model değerlendirme türlerini yapabilirsiniz

Modellerinizi derlemeyi bitirdiğinizde Oturumunuz sırasında Rattle'ın çalıştırmış olduğu 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ü bir hata içeriyor. 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ümesinin PostgreSQL'e nasıl yüklenip sorgu yapılacağı 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ın ayrıntıları birkaç satırda gösterilir:

# "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 parolayla oturum açabilmek için IPv4 yerel bağlantılar satırını ident 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

Psql'yi (PostgreSQL için etkileşimli bir terminal) yerleşik postgres kullanıcısı olarak 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ıyla 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şim kurabilen grafiksel bir araç olan SQuirreL SQL ile bazı sorgular çalıştıralım.

İlk olarak, 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. Aç'ı 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 temel bir sorgu girin: örneğin,SELECT * from data;
  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 çok daha fazla sorgu çalıştırabilirsiniz. Ö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;

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 olduğu e-postaların çoğu istenmeyen posta olarak görünü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 öğrenmesi için MADlib iyi çalışır.

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 Azure Synapse Analytics nedir? adresini ziyaret edin .

Veri ambarı'na bağlanmak ve tabloyu oluşturmak için komut isteminden şu 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 ile 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 satır sonları bekler. Bcp'e bunu anlatmak 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.