Kurs

TabPy Araçları
TabPy Tools, TabPy sunucusunda Python fonksiyonlarını dağıtmak ve yönetmek için bir Python paketidir.
TabPy araçlarının işlevlerine derinlemesine bakalım.
TabPy’ye Bağlanma
İstemci fonksiyonu, URL ve PORT kullanarak Python API’sini TabPy sunucusuna bağlamanızı sağlar.
rom tabpy.tabpy_tools.client import Client
client = Client('http://localhost:9004/')
“client” nesnesini kimlik doğrulaması ayarlamak ve sunucudaki Python fonksiyonlarını yönetmek için kullanabiliriz.
Kimlik Doğrulama
Kullanıcı adı ve şifrenizi “set_credentials” fonksiyonunu kullanarak ayarlayabilirsiniz. Sunucuya bir model dağıtmak için kimlik bilgilerini ayarlamak gereklidir.
Not: Bu fonksiyonu yalnızca TabPy sunucusunda kimlik doğrulamayı etkinleştirdiyseniz çalıştırın. Daha fazla bilgi için sunucu yapılandırma belgelerini okuyun.
client.set_credentials('username', 'password')
Bir Fonksiyonu Dağıtma
Bir fonksiyon oluşturun ve `client.deploy()` fonksiyonunu kullanarak yayınlayın. Üç argüman gerekir: fonksiyon adı, Python fonksiyonu ve açıklama.
addition fonksiyonu iki veri alanını toplar ve liste olarak döndürür. Daha sonra “add” fonksiyonuna Tableau’dan erişilecektir.
client.deploy('add', addition, 'Adds two numbers x and y')
Bir Modeli Dağıtma
Bir makine öğrenmesi modelini eğitip model çıkarım fonksiyonunu dağıttığınızda, Tableau modeli ve fonksiyon tanımını cloudpickle kullanarak otomatik olarak kaydeder. Daha hızlı yanıt süresi sağlamak için sunucu belleğinde kalır.
Kısacası, Tableau’da bir şeyler değiştiğinde modelinizi yeniden eğitmeniz gerekmez. Modellerin dağıtımı hakkında daha fazlasını ilerleyen bölümlerde öğreneceğiz.
Uç Noktaları Kaldırma
Bir fonksiyonu veya modeli kaldırmak için `remove` fonksiyonunu kullanın. Yalnızca bir fonksiyon adı gerekir.
client.remove('add')
>>> Daha gelişmiş özellikler için GitHub’daki TabPy/tabpy deposuna göz atın.
IDE Kullanarak Bir Python Fonksiyonu Dağıtma
Birinci bölüme benzer şekilde, Pearson Korelasyon Katsayısı fonksiyonu oluşturacağız. Fonksiyonu Tableau’da yazmak yerine Python API’si ile sunucuya dağıtacak ve ardından Tableau hesaplaması kullanarak fonksiyona erişeceğiz.
Bu bölümde, satış ve kâr veri alanları arasındaki korelasyonu hesaplamak için Kaggle’daki Sales Store Product veri setini kullanacağız.

Kaggle Veri Kümesi Sales Store Product
Python kodu yazmaya geçmeden önce en güncel TabPy paketine sahip olduğunuzdan emin olun.
pip install -U tabpy
Sunucuyu yerelde bir terminal üzerinden çalıştırın.
tabpy
TabPy İstemcisi
Python’a aşinaysanız, bu kısım sizin için oldukça basit olacaktır. Python’a giriş kursunu alarak Python fonksiyonları hakkında her şeyi öğrenebilirsiniz.
- tabpy_tools’tan Client’ı ve hesaplama için NumPy’yi içe aktaracağız.
- URL ve PORT kullanarak TabPy sunucusuna bağlanın.
- x ve y alıp tek bir sütunda korelasyon katsayısını döndürecek pearson_correlation_coefficient() fonksiyonunu oluşturun.
- “pcc” fonksiyonunu yayınlamak için client.deploy() fonksiyonunu kullanın. Üç argüman gerekir: ad, fonksiyon ve açıklama.
from tabpy.tabpy_tools.client import Client
import numpy as np
client = Client('http://localhost:9004/')
def pearson_correlation_coefficient(x,y):
return np.corrcoef(x,y)[0,1]
client.deploy('pcc', pearson_correlation_coefficient, 'correlation coefficient is extracted of x and y')
TabPy Sorgusu
Şimdi bu fonksiyonu Tableau’da tabpy.query() kullanarak çağıracağız. Python fonksiyon adlarını ve _arg1 ile _arg2 gibi argüman yer tutucularını gerektirir.
- SCRIPT_REAL içinde sorgu betiğini ekleyin ve veri alanlarını toplayın.
- Sorgu betiği return ile başlar ve sonucu JSON’dan çıkarmak için [‘response’] ile biter.
- Varsayılan tablo hesaplamasını Customer Name veri alanı olarak ayarlayın.
- Apply ve ardından OK düğmesine basın.

Pearson korelasyon katsayısı hesaplanan alanı
Tableau betiğini anlamak için eğitimin ilk bölümünü inceleyebilirsiniz.
SCRIPT_REAL("return tabpy.query('pcc',_arg1, _arg2)['response']",
SUM([Sales]),SUM([Profit]))
Veri Görselleştirme
Şimdi, ürün kategorisine ve müşteri segmentasyonuna göre kategorize edilmiş korelasyonu gösteren bir görselleştirme oluşturacağız.
- Customer Name’i Marks panelinde Detail üzerine ve Ship Mode’u Color üzerine sürükleyip bırakın.
- Customer Segment ve pcc (korelasyon hesaplanan alanı) ögelerini Columns rafına sürükleyip bırakın.
- Product Category’yi Rows rafına sürükleyip bırakın.

Korelasyon katsayısı çubuk grafiği
Çoğu durumda, Corporate sektörde satış ile kâr arasında yüksek bir korelasyon vardır. Genel olarak, korelasyon katsayılarını kullanabilir ve şirketin kârını artırmak için veriye dayalı kararlar alabilirsiniz.
Diğer korelasyon katsayıları, Python’da korelasyon hesaplama ve korelasyon ile nedensellik arasındaki ilişki hakkında bilgi edinmek için Python ile korelasyon ayrıntıları eğitimimizi okuyun.
Prophet Modelini Tableau’ya Dağıtma
Bu bölümde Facebook Prophet tahmin modelini dağıtmayı ve tarih veri alanlarını değiştirmeyi öğreneceğiz. 2015’ten 2020’ye kadar olan Apple Hisse Fiyatları üzerinde zaman serisi modelini eğiteceğiz.

Kaggle Veri Kümesi Apple Stock Prices (2015-2020)
Tableau’da betik yazmaya ve tahmin görselleştirmesi oluşturmaya geçmeden önce, Python kodunu test etmemiz ve tahmin modelini Jupyter Notebook’ta değerlendirmemiz gerekiyor.
Facebook Prophet
Facebook Prophet, tek değişkenli zaman serisi verilerinin otomatik tahmini için açık kaynaklı bir kütüphanedir. Yıllık, haftalık ve günlük mevsimsellik etkilerinde en iyi şekilde çalışır.
Neden Prophet?
Kayıp veriler, trend değişimleri ve aykırı değerlerle başa çıkmada iyidir.
Prophet’in Kurulumu
Aşağıdaki komutu terminalde kullanarak Prophet Python paketini kurabilirsiniz.
pip install pystan==2.19.1.1
pip install prophet
Ya da Anaconda Python ortamını kullanıyorsanız aşağıdaki komutu kullanın.
conda install -c conda-forge prophet
Proje Başlatma
- Veri alma ve işleme için pandas’ı ve tahmin modellerini eğitip değerlendirmek için Prophet’i içe aktararak başlayacağız.
- Apple hisse veri seti (AAPL.csv) dosyasını pandas read_csv fonksiyonuyla okuyun.
- X’i date ve high sütunlarıyla tanımlayın.
- Veri çerçevesinin şeklini görüntüleyin ve high sütununun zaman serisi çizgi grafiğini görselleştirin.
import pandas as pd
from prophet import Prophet
data = pd.read_csv("AAPL.csv")
X = data.loc[:, ['date','high']]
print(X.shape)
X.plot();
Çıktı
(1258, 2)
Apple hissesi zamanla artmaktadır. İki düşüş yaşamış olsa da istikrarlı büyümeye geri dönmüştür.

Derinlemesine bilgi için Hugo Bowne-Anderson’ın Python zaman serisi analizi eğitimini izleyin. Ayrıca Python’da zaman serisi analizi üzerine DataCamp’in kısa bir kursunu da alarak uygulamalı deneyim kazanabilirsiniz.
Makine Öğrenmesi Modelini Kurma
Bu kısımda, verileri Prophet modeli için hazırlayıp varsayılan hiperparametrelerle eğiteceğiz.
- Sütunları ds ve y olarak yeniden adlandırın
- ds sütunlarını datetime (tarih) tipine çevirin
- Prophet() kullanarak bir model tanımlayın
- model.fit() ile modeli eğitin
X.columns = ['ds', 'y']
X['ds']= pd.to_datetime(X['ds'], format='%Y-%m-%d').dt.date
model = Prophet()
# fit the model
model.fit(X)
Model Değerlendirme
Değerlendirme için, veri setine gelecekteki tarihleri eklememiz gerekir. Bunu make_future_dataframe kullanarak yapabiliriz.
Şunları ayarlayacağız:
- prediods 365 gün olarak
- freq “D” olarak. Bunu “Y” olarak da değiştirebilirsiniz, ancak o zaman periods değerini 1’e çekmeniz gerekir.
- include_history önceki verileri hariç tutmak için false olarak.
future = model.make_future_dataframe(periods=365,
freq='D',
include_history=False
)
future.tail()
Çıktı
Gördüğümüz üzere, future veri seti 2021 yılı ile bitiyor.
ds
360 2021-05-18
361 2021-05-19
362 2021-05-20
363 2021-05-21
364 2021-05-22
Sıradaki adım, bu verileri kullanarak Apple hissesinin high değerlerini tahmin etmektir. Sonrasında 'ds', 'yhat', 'yhat_lower' ve 'yhat_upper' değerlerini görüntüleyeceğiz.
yhat_lower ve yhat_upper kabul edilebilir sapma aralığını tanımlar. Kısaca, hisse fiyatı 485,3’e kadar yükselebilir ve 365,4’e kadar düşebilir. Bu bilgi, günlük işlem yapanların riski değerlendirmesine yardımcı olabilir.
forecast = model.predict(future)
forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail
Çıktı
ds yhat yhat_lower yhat_upper
360 2021-05-18 423.757736 365.415878 485.293438
361 2021-05-19 423.862811 365.527086 482.751097
362 2021-05-20 423.918642 365.233839 482.501335
363 2021-05-21 423.842872 364.454184 483.672508
364 2021-05-22 421.187822 360.181717 481.024524
Tahmin verilerini plot() fonksiyonunu kullanarak görselleştirelim. Kabul edilebilir aralığı mavi renkte gösteren nokta ve çizgi grafiğini görüntülemek için tahmini değerleri gerektirir.
model.plot(forecast)
Aşağıdaki görselleştirme, Apple hisselerinin düşüş olmadan değer kazanacağını gösteriyor.

Tahmini, doyma tahminleri, trend değişim noktaları, mevsimsellik, tatil etkileri ve regresörler, çarpımsal mevsimsellik, belirsizlik aralıkları ve aykırı değerler ile ilgili hiperparametreleri ayarlayarak iyileştirebilirsiniz. Ayrıca hiperparametre optimizasyonu kullanarak bunları otomatik biçimde de ayarlayabilirsiniz. Facebook Prophet hakkında daha fazla bilgi edinmek için belgeleri okuyun.
Zaman serisi tahmini geniş bir alandır ve Moez Ali’nin zaman serisi tahmini eğitimini takip ederek her şeyi öğrenebilirsiniz. Eğitim; zaman serisi analizi, istatistiksel modeller, Python çerçeveleri ve AutoML’i kapsar.
Ayrıca Python’da zaman serisi verilerini görselleştirme kursumuzu alarak çizgi grafikleri, mevsimselliği, trendi ve gürültüyü tespit etmeyi ve birden çok zaman serisini görüntülemeyi öğrenebilirsiniz.
Model Çıkarımını Dağıtma
Bu bölümde, model çıkarımını dağıtacağız. Bu sayede modeli ve fonksiyon tanımını TabPy sunucusunda saklayarak daha hızlı yanıt süresi sağlayacağız.
Önce URL ve PORT kullanarak Client’a bağlanacağız. Ardından prophet_forecasting fonksiyonunu tanımlayacağız.
- Girdi olarak tahmin edilecek yıl sayısını alacak ve bunu kullanarak bir future tarih çerçevesi oluşturacak.
- model.predict ve future veri çerçevesini kullanarak tahminler yapacak.
- Tarihleme açısından tarihi verilerle birleştirebilmek için “yhat” sütununu “y” olarak yeniden adlandıracak.
- Son kısım hassas: Tableau’da data alanına değer ekleyemeyiz. Bunun yerine Tarih değerlerini 365*n kadar kaydıracağız. Burada n yıl sayısıdır.
Son olarak bunu paketleyip client.deploy() kullanarak TabPy sunucusuna dağıtacağız. Fonksiyon adını “prophet” olarak ayarlayacağız. override argümanı, modelin ve fonksiyonun sürümlerini oluşturmamıza yardımcı olur. Bu, kodu hata ayıklarken başlangıç aşamasında gereklidir.
from tabpy.tabpy_tools.client import Client
client = Client('http://localhost:9004/')
def prophet_forecasting(n):
future = model.make_future_dataframe(periods=365*n,include_history=False)
prediction = model.predict(future)
prediction.rename(columns={"yhat":"y"}, inplace=True)
return pd.concat([X,prediction[['ds','y']]])['y'].to_list()[365*n:]
client.deploy('prophet',
prophet_forecasting,
'forecast time series data using prophet',override=True)
Tableau’yu Kurma
Tableau içinde yıl sayısını kontrol etmek için bir Years parametresi oluşturmamız gerekiyor. Bu parametre prophet fonksiyonunda kullanılacaktır.
Data bölümünde sağ tıklayıp Create Parameter seçeneğini seçerek bir Years parametresi oluşturabiliriz. Data type’ı Integer, Current value’yu 1 yapın ve Range’e tıklayarak Minimum 1 ve Maximum 5 değerlerini ekleyin.

Years Parametresini Oluşturma
Ardından bir Forecast_date hesaplanan alanı oluşturacağız. Date veri alanını kullanacak ve değerleri Years sayısına göre kaydıracağız.

Forecast_date hesaplanan alanı
DATEADD fonksiyonu, Years değerini Date veri alanına ekleyecek ve ardından günü baz alacak şekilde keser.
DATETRUNC('day',DATEADD('year',[Years],[Date])))
Sonraki kısımda, bir forecast hesaplanan alanı oluşturacak ve dağıtılmış modele tabpy.query() kullanarak erişeceğiz. Sorgu fonksiyonu iki bölümden oluşur; ilk bölüm Python fonksiyonunun adı, ikinci bölüm ise argümanlar için yer tutucuların listesidir.

forecast hesaplanan alanı
Bizim durumumuzda yalnızca tek bir argüman var, bu yüzden _arg1 ekleyeceğiz. Sorguyu SCRIPT_REAL adlı Tableau fonksiyonuyla sarmalayacak ve girdi olarak Years parametresini vereceğiz. OK düğmesine basmadan önce sonuçların Forecast_date boyunca hesaplandığından emin olun. Bunu mavi metne (Default Table Calculation) tıklayarak değiştirebilirsiniz.
SCRIPT_REAL("return tabpy.query('prophet',_arg1[0])['response']",
[Years]
)
Ardından High veri alanını ve Years parametrelerini kullanarak bir Actual hesaplanan alanı oluşturacağız.

Actual hesaplanan alanı
LOOKUP, High değerlerini Years*365 kadar kaydırmamıza yardımcı olur. Örneğin, Years parametresi 2 ise, değerleri 730 kadar kaydıracaktır.
LOOKUP(SUM([High]),[Years]*365)
Gerçek vs. Tahmin
Nihayet sona geldik. Gerçek vs. Tahmin çizgi grafiğini çizmek için şu basit adımları izleyeceğiz:
- Sol alttaki Parameters bölümüne gidin, Years parametresine sağ tıklayın ve Show Parameters’ı seçin.
- Forecast_date’i Columns rafına sürükleyip bırakın. Day olarak değiştirin.
- Dimensions’tan Measure Names’i Filters’a sürükleyip bırakın. Yalnızca Actual ve forecast’ı seçin.
- Dimensions’tan Measure Names’i Color’a sürükleyip bırakın.
- Son olarak, Measures’tan Measure Names’i Rows rafına sürükleyip bırakın.
Tüm adımları uyguladıktan sonra, Actual ve forecastı farklı renklerde göreceksiniz.

Gerçek vs. Tahmin çizgi grafiği
Yukarıdaki çizgi grafik mükemmel olmaktan uzaktır ve hiperparametre ayarı, çapraz doğrulama, eksik değerlerin ve tarihlerinin tamamlanması ve tarih fonksiyonunun iyileştirilmesini gerektirir.
Sonuç
Bu eğitimde, bir makine öğrenmesi modelini TabPy sunucusunda nasıl kurup dağıtacağımızı ve Tableau betiği kullanarak buna nasıl erişeceğimizi öğrendik. Ayrıca tabpy_tools’un temel bilgilerini ve bunu fonksiyon veya model dağıtmak için nasıl kullanabileceğimizi de gördük.
DataCamp kursunu alarak finansal tahmin hakkında daha fazla bilgi edinin. Gelir tabloları, bilanço ve tahmin oranları, ham verileri biçimlendirme, tarihleri ve finansal dönemleri yönetme ile varsayımlar ve tahminlerdeki varyansları anlamayı öğreneceksiniz.
Zaman serisi tahmini başlangıçtır; tahminlerimizi aşağıdaki gibi diğer makine öğrenmesi algoritmalarıyla eğiterek geliştirebiliriz:
- Otoregresif Entegre Hareketli Ortalama (ARIMA)
- Mevsimsel Otoregresif Entegre Hareketli Ortalama (SARIMA)
- Üstel Düzgünleştirme (ES)
- XGBoost
- LSTM (Derin Öğrenme)
- Temporal Fusion Transformer (Google)
Tableau’ya yeniyseniz ve veri görselleştirme ile istatistiksel hesaplama hakkında her şeyi öğrenmek istiyorsanız, Tableau fundamentals yetkinlik yolunu takip edin.
Bu seri’nin son bölümüdür. TabPy eğitiminin ilk bölümünde TabPy hakkında her şeyi öğrenmiş ve Tableau içinde Python betiği çalıştırarak Amsterdam’daki Airbnb ilanlarının çeşitli kümelerini oluşturmuştuk.
