Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir: SQL Server 2017 (14.x) ve sonraki sürümleri
Azure SQL Yönetimli Örnek
Bu beş bölümden oluşan öğretici serisinin ikinci bölümünde örnek verileri keşfedecek ve bazı çizimler oluşturacaksınız. Daha sonra Python'da grafik nesnelerini seri hale getirme ve ardından bu nesnelerin seri durumdan çıkarma ve çizimler yapma hakkında bilgi edineceksiniz.
Bu makalede şunları yapacaksınız:
- Örnek verileri gözden geçirme
- T-SQL'de Python kullanarak çizimler oluşturma
Birinci bölümde önkoşulları yüklemiş ve örnek veritabanını geri yüklemişsinizdir.
Üçüncü bölümde, bir Transact-SQL işlevi kullanarak ham verilerden özellik oluşturmayı öğreneceksiniz. Ardından bu işlevi saklı yordamdan çağırarak özellik değerlerini içeren bir tablo oluşturacaksınız.
Dördüncü bölümde, sql server saklı yordamını kullanarak modeli oluşturmak ve eğitmek için modülleri yükleyip gerekli işlevleri çağıracaksınız.
Beşinci bölümde, dördüncü bölümde eğitip kaydettiğiniz modelleri nasıl kullanıma hazır hale getirmeniz gerektiğini öğreneceksiniz.
Verileri gözden geçirme
İlk olarak, NYC Taxi verilerini kullanmayı kolaylaştırmak için bazı değişiklikler yaptığımızdan veri şemasına göz atmak için bir dakika bekleyin
- Özgün veri kümesi, taksi tanımlayıcıları ve seyahat kayıtları için ayrı dosyalar kullandı. Madalyon, hack_license vepickup_datetime sütunlarında bulunan iki özgün veri kümesine katıldık.
- Özgün veri kümesi birçok dosyaya yayılmış ve oldukça büyük. Özgün kayıt sayısının sadece %1'ini elde etmek için örneklemeyi düşürdük. Geçerli veri tablosunda 1.703.957 satır ve 23 sütun vardır.
Taksi tanımlayıcıları
Madalyon sütunu, taksinin benzersiz kimlik numarasını temsil eder.
hack_license sütunu taksi sürücüsünün lisans numarasını (anonimleştirilmiş) içerir.
Seyahat ve ücret kayıtları
Her seyahat kaydında teslim alma ve bırakma yeri ve zamanı ile seyahat mesafesi yer alır.
Her ücret kaydı, ödeme türü, toplam ödeme tutarı ve bahşiş tutarı gibi ödeme bilgilerini içerir.
Son üç sütun çeşitli makine öğrenmesi görevleri için kullanılabilir. tip_amount sütunu sürekli sayısal değerler içerir ve regresyon analizi için etiket sütunu olarak kullanılabilir. İşaretli sütun yalnızca "evet/hayır" değerlerine sahiptir ve ikili sınıflandırma için kullanılır. tip_class sütunu birden çok sınıf etiketine sahiptir ve bu nedenle çok sınıflı sınıflandırma görevleri için etiket olarak kullanılabilir.
Etiket sütunları için kullanılan değerlerin tümü, şu iş kuralları kullanılarak tip_amount sütununa dayanmaktadır:
Etiket sütunu
tipped0 ve 1 olası değerlerine sahiptir0 ise
tip_amount> ,tipped= 1; aksi takdirdetipped= 0Etiket sütunu
tip_class0-4 olası sınıf değerlerine sahiptirSınıf 0:
tip_amount= $0Sınıf 1:
tip_amount> $0 vetip_amount<= $5Sınıf 2:
tip_amount> $5 vetip_amount<= $10Sınıf 3:
tip_amount> $10 vetip_amount<= $20Sınıf 4:
tip_amount> $20
T-SQL'de Python kullanarak çizimler oluşturma
Veri bilimi çözümü geliştirmek genellikle yoğun veri keşfi ve veri görselleştirmeyi içerir. Görselleştirme, veri ve aykırı değerlerin dağılımını anlamak için çok güçlü bir araç olduğundan Python, verileri görselleştirmek için birçok paket sağlar. Matplotlib modülü görselleştirme için en popüler kitaplıklardan biridir ve histogramlar, dağılım çizimleri, kutu çizimleri ve diğer veri araştırma grafikleri oluşturmaya yönelik birçok işlev içerir.
Bu bölümde saklı yordamları kullanarak çizimlerle çalışmayı öğreneceksiniz. Görüntüyü sunucuda açmak yerine Python nesnesini plotvarbinary verileri olarak depolar ve sonra bunu başka bir yerde paylaşılabilen veya görüntülenebilen bir dosyaya yazarsınız.
Varbinary veri formatında bir çizim oluşturma
Saklı yordam, serileştirilmiş bir Python figure nesnesini varbinary veri akışı olarak döndürür. İkili verileri doğrudan görüntüleyemezsiniz, ancak verileri seri durumdan çıkarmak ve görüntülemek için istemcideki Python kodunu kullanabilir ve ardından görüntü dosyasını bir istemci bilgisayara kaydedebilirsiniz.
PyPlotMatplotlib depolanmış yordamını oluşturun.
Aşağıdaki komut dosyasında:
- Değişken
@query,SELECT tipped FROM nyctaxi_sampleolarak betik giriş değişkenine bağımsız değişken olarak Python kod bloğuna geçirilen sorgu metnini tanımlar@input_data_1. - Python betiği oldukça basittir: matplotlib
figurenesneleri histogram ve dağılım çizimi yapmak için kullanılır ve bu nesneler daha sonra kitaplığı kullanılarakpickleserileştirilir. - Python grafik nesnesi çıktı için bir pandas DataFrame'e seri hale getirilir.
DROP PROCEDURE IF EXISTS PyPlotMatplotlib; GO CREATE PROCEDURE [dbo].[PyPlotMatplotlib] AS BEGIN SET NOCOUNT ON; DECLARE @query nvarchar(max) = N'SELECT cast(tipped as int) as tipped, tip_amount, fare_amount FROM [dbo].[nyctaxi_sample]' EXECUTE sp_execute_external_script @language = N'Python', @script = N' import matplotlib matplotlib.use("Agg") import matplotlib.pyplot as plt import pandas as pd import pickle fig_handle = plt.figure() plt.hist(InputDataSet.tipped) plt.xlabel("Tipped") plt.ylabel("Counts") plt.title("Histogram, Tipped") plot0 = pd.DataFrame(data =[pickle.dumps(fig_handle)], columns =["plot"]) plt.clf() plt.hist(InputDataSet.tip_amount) plt.xlabel("Tip amount ($)") plt.ylabel("Counts") plt.title("Histogram, Tip amount") plot1 = pd.DataFrame(data =[pickle.dumps(fig_handle)], columns =["plot"]) plt.clf() plt.hist(InputDataSet.fare_amount) plt.xlabel("Fare amount ($)") plt.ylabel("Counts") plt.title("Histogram, Fare amount") plot2 = pd.DataFrame(data =[pickle.dumps(fig_handle)], columns =["plot"]) plt.clf() plt.scatter( InputDataSet.fare_amount, InputDataSet.tip_amount) plt.xlabel("Fare Amount ($)") plt.ylabel("Tip Amount ($)") plt.title("Tip amount by Fare amount") plot3 = pd.DataFrame(data =[pickle.dumps(fig_handle)], columns =["plot"]) plt.clf() OutputDataSet = plot0.append(plot1, ignore_index=True).append(plot2, ignore_index=True).append(plot3, ignore_index=True) ', @input_data_1 = @query WITH RESULT SETS ((plot varbinary(max))) END GO- Değişken
Saklı yordamı hiçbir bağımsız değişken olmadan çalıştırarak, giriş sorgusu olarak hard-code edilmiş verilerden bir çizim oluşturun.
EXEC [dbo].[PyPlotMatplotlib]Sonuçlar şuna benzer olmalıdır:
plot 0xFFD8FFE000104A4649... 0xFFD8FFE000104A4649... 0xFFD8FFE000104A4649... 0xFFD8FFE000104A4649...Bir Python istemcisinden artık ikili çizim nesnelerini oluşturan SQL Server örneğine bağlanabilir ve çizimleri görüntüleyebilirsiniz.
Bunu yapmak için sunucu adını, veritabanı adını ve kimlik bilgilerini uygun şekilde değiştirerek aşağıdaki Python kodunu çalıştırın (Windows kimlik doğrulaması için
UIDvePWDparametreleriniTrusted_Connection=Trueile değiştirin). Python sürümünün istemcide ve sunucuda aynı olduğundan emin olun. Ayrıca istemcinizdeki Python kitaplıklarının (matplotlib gibi) sunucuda yüklü kitaplıklara göre aynı veya daha yüksek bir sürüm olduğundan emin olun. Yüklü paketlerin ve sürümlerinin listesini görüntülemek için bkz. Python paket bilgilerini alma.%matplotlib notebook import pyodbc import pickle import os cnxn = pyodbc.connect('DRIVER=SQL Server;SERVER={SERVER_NAME};DATABASE={DB_NAME};UID={USER_NAME};PWD={PASSWORD}') cursor = cnxn.cursor() cursor.execute("EXECUTE [dbo].[PyPlotMatplotlib]") tables = cursor.fetchall() for i in range(0, len(tables)): fig = pickle.loads(tables[i][0]) fig.savefig(str(i)+'.png') print("The plots are saved in directory: ",os.getcwd())Bağlantı başarılı olursa aşağıdakine benzer bir ileti görmeniz gerekir:
Çizimler dizine kaydedilir: xxxx
Çıkış dosyası Python çalışma dizininde oluşturulur. Çizimi görüntülemek için Python çalışma dizinini bulun ve dosyayı açın. Aşağıdaki görüntüde, istemci bilgisayara kaydedilmiş bir çizim gösterilmektedir.
Sonraki Adımlar
Bu makalede şunları yapacaksınız:
- Örnek veriler gözden geçirildi
- T-SQL'de Python kullanılarak oluşturulan çizimler