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 2016 (13.x) ve sonraki sürümleri
Azure SQL Yönetilen Ö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 beş bölümden oluşan öğretici serisinin ikinci bölümünde örnek verileri gözden geçirecek ve ardından R tabanındaki genel barplot ve hist işlevleri kullanarak bazı çizimler oluşturacaksınız.
Bu makalenin önemli bir amacı, saklı yordamlarda Transact-SQL R işlevlerini çağırmayı ve sonuçları uygulama dosyası biçimlerinde kaydetmeyi göstermektir:
-
barplotkullanarak, varbinary veri olarak bir R çizimi oluşturmak için bir saklı yordam oluşturun. İkili akışı bir görüntü dosyasına aktarmak için bcp kullanın. -
histkullanarak bir çizim oluşturmak için, sonuçları JPG ve PDF çıktısı olarak kaydeden bir saklı yordam oluşturun.
Uyarı
Görselleştirme, veri şeklini ve dağıtımını anlamak için çok güçlü bir araç olduğundan, R histogramlar, dağılım çizimleri, kutu çizimleri ve diğer veri araştırma grafiklerini oluşturmaya yönelik çeşitli işlevler ve paketler sağlar. R genellikle grafik çıktı için bir R cihazı kullanarak görüntüler oluşturur ve uygulamada işleme için varbinary veri türü olarak yakalayıp depolayabilirsiniz. Ayrıca, görüntüleri herhangi bir destek dosyası biçimine (.JPG, .PDF vb.) kaydedebilirsiniz.
Bu makalede şunları yapacaksınız:
- Örnek verileri gözden geçirme
- T-SQL'de R kullanarak çizimler oluşturma
- Birden çok dosya biçiminde çıkış çizimleri
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
Veri bilimi çözümü geliştirmek genellikle yoğun veri keşfi ve veri görselleştirmeyi içerir. Bu nedenle, henüz yapmadıysanız önce örnek verileri gözden geçirmek için bir dakikanızı alın.
Özgün genel veri kümesinde, taksi tanımlayıcıları ve seyahat kayıtları ayrı dosyalarda sağlanmıştır. Ancak örnek verilerin kullanımını kolaylaştırmak için iki özgün veri kümesi madalyon, hack_license ve pickup_datetime sütunlarında birleştirilmiştir. Kayıtlar, özgün kayıt sayısının yalnızca %1'ini almak için örneklenerek ayrıca seçildi. Sonuçta elde edilen aşağı örneklenmiş veri kümesinde 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.
Bu izlenecek yol yalnızca ikili sınıflandırma görevini gösterir; diğer iki makine öğrenmesi görevi, regresyon ve çok sınıflı sınıflandırma için model oluşturmayı deneyebilirsiniz.
Etiket sütunları için kullanılan değerlerin tümü, şu iş kuralları kullanılarak tip_amount sütununu temel alır:
Türetilmiş sütun adı Rule Uçlu tip_amount > 0 ise, bahşiş verildi = 1, aksi takdirde bahşiş verildi = 0 tip_class Sınıf 0: tip_amount = $0
Sınıf 1: tip_amount > $0 ve tip_amount <= $5
Sınıf 2: tip_amount > $5 ve tip_amount <= $10
Sınıf 3: tip_amount > $10 ve tip_amount <= 20 USD
Sınıf 4: tip_amount > $20
T-SQL'de R kullanarak çizimler oluşturma
Önemli
SQL Server 2019'dan başlayarak, yalıtım mekanizması çizim dosyasının depolandığı dizin için uygun izinleri vermenizi gerektirir. Bu izinleri ayarlama hakkında daha fazla bilgi için Windows'da SQL Server 2019'da Dosya izinleri bölümüne bakın: Machine Learning Services için yalıtım değişiklikleri.
Çizimi oluşturmak için R işlevini barplotkullanın. Bu adım, bir Transact-SQL sorgusundaki verileri temel alan bir histogram çizer. Bu işlevi RPlotHistogram adlı saklı bir yordamda sarmalayabilirsiniz.
SQL Server Management Studio'da, Nesne Gezgini'nde NYCTaxi_Sample veritabanına sağ tıklayın ve Yeni Sorgu'yu seçin. Alternatif olarak, Azure Data Studio'da Dosyamenüsünden Yeni Not Defteri'ni seçin ve veritabanına bağlanın.
Histogramı oluşturan bir saklı prosedür oluşturmak için aşağıdaki betiği yapıştırın. Bu örnek RPlotHistogram olarak adlandırılır.
CREATE PROCEDURE [dbo].[RPlotHistogram] AS BEGIN SET NOCOUNT ON; DECLARE @query nvarchar(max) = N'SELECT tipped FROM [dbo].[nyctaxi_sample]' EXECUTE sp_execute_external_script @language = N'R', @script = N' image_file = tempfile(); jpeg(filename = image_file); #Plot histogram barplot(table(InputDataSet$tipped), main = "Tip Histogram", col="lightgreen", xlab="Tipped or not", ylab = "Counts", space=0) dev.off(); OutputDataSet <- data.frame(data=readBin(file(image_file, "rb"), what=raw(), n=1e6)); ', @input_data_1 = @query WITH RESULT SETS ((plot varbinary(max))); END GO
Bu betikte anlaşılması gereken önemli noktalar şunlardır:
Değişken
@query, sorgu metni'SELECT tipped FROM nyctaxi_sample'olan ve betiğin giriş değişkeni@input_data_1'ye bağımsız değişken olarak geçirilen metni R betiğine tanımlar. tr-TR: R betikleri dış işlemler olarak çalıştığında, betiğinizdeki girişler ile SQL Server'da R oturumunu başlatan sp_execute_external_script sistem saklı yordamının girişleri arasında bire bir eşleme yapmalısınız.R betiğinde, görüntüyü depolamak için bir değişken (
image_file) tanımlanır.barplotfonksiyonu çizimi oluşturmak için çağrılır.Bu komutu SQL Server'da dış betik olarak çalıştırdığınızdan R cihazı kapalı olarak ayarlanır. Genellikle R'de, üst düzey bir çizim komutu gönderdiğinizde R, cihaz adı verilen bir grafik penceresi açar. Bir dosyaya yazıyorsanız veya çıkışı başka bir şekilde işliyorsanız cihazı kapatabilirsiniz.
R grafik nesnesi çıkış için bir R data.frame olarak serileştirilir.
Saklı yordamı yürütür ve ikili verileri bir görüntü dosyasına aktarmak için bcp'yi kullanır
Saklı yordam, görüntüyü bir varbinary veri akışı olarak döndürür ve bu veri akışını doğrudan görüntüleyemezsiniz. Ancak bcp yardımcı programını kullanarak varbinary verilerini alabilir ve istemci bilgisayarda görüntü dosyası olarak kaydedebilirsiniz.
Management Studio'da aşağıdaki deyimi çalıştırın:
EXEC [dbo].[RPlotHistogram]Results
çizim0xFFD8FFE000104A4649...
Bir PowerShell komut istemi açın ve aşağıdaki komutu çalıştırarak bağımsız değişken olarak uygun örnek adını, veritabanı adını, kullanıcı adını ve kimlik bilgilerini sağlayın. Windows kimliklerini kullananlar için -U ve -P'yi-T ile değiştirebilirsiniz.
bcp "exec RPlotHistogram" queryout "plot.jpg" -S <SQL Server instance name> -d NYCTaxi_Sample -U <user name> -P <password> -TUyarı
bcp için komut anahtarları büyük/küçük harfe duyarlıdır.
Bağlantı başarılı olursa, grafik dosya biçimi hakkında daha fazla bilgi girmeniz istenir.
Bu değişiklikler dışında varsayılanları kabul etmek için her istemde ENTER tuşuna basın:
Alan çiziminin ön ek uzunluğu için 0 yazın.
Çıkış parametrelerini daha sonra yeniden kullanmak üzere kaydetmek istiyorsanız Y yazın.
Enter the file storage type of field plot [varbinary(max)]: Enter prefix-length of field plot [8]: 0 Enter length of field plot [0]: Enter field terminator [none]: Do you want to save this format information in a file? [Y/n] Host filename [bcp.fmt]:Results
Starting copy... 1 rows copied. Network packet size (bytes): 4096 Clock Time (ms.) Total : 3922 Average : (0.25 rows per sec.)Tavsiye
Biçim bilgilerini dosyaya (bcp.fmt) kaydederseniz , bcp yardımcı programı gelecekte grafik dosya biçimi seçenekleri istenmeden benzer komutlara uygulayabileceğiniz bir biçim tanımı oluşturur. Biçim dosyasını kullanmak için, parola argümanından sonra herhangi bir komut satırının sonuna
-f bcp.fmtekleyin.Çıkış dosyası, PowerShell komutunu çalıştırdığınız dizinde oluşturulur. Çizimi görüntülemek için dosyasını plot.jpgaçmanız gerekir.
hist kullanarak bir saklı yordam oluştur
Veri bilimcileri genellikle farklı açılardan verilere ilişkin içgörüler elde etmek için birden çok veri görselleştirmesi oluşturur. Bu örnekte, .JPG ve .PDF biçime histogramlar, dağılım grafikleri ve diğer R grafiklerini yazmak için RPlotHist adlı bir saklı yordam oluşturacaksınız.
Bu saklı yordam histogramı oluşturmak için hist işlevini kullanır ve ikili verileri .JPG, .PDF ve .PNG gibi popüler biçimlere dışa aktarır.
SQL Server Management Studio'da, Nesne Gezgini'nde NYCTaxi_Sample veritabanına sağ tıklayın ve Yeni Sorgu'yu seçin.
Histogramı çizen bir depolanmış prosedür oluşturmak için aşağıdaki betiği yapıştırın. Bu örnek RPlotHist olarak adlandırılır.
CREATE PROCEDURE [dbo].[RPlotHist] 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'R', @script = N' # Set output directory for files and check for existing files with same names mainDir <- ''C:\\temp\\plots'' dir.create(mainDir, recursive = TRUE, showWarnings = FALSE) setwd(mainDir); print("Creating output plot files:", quote=FALSE) # Open a jpeg file and output histogram of tipped variable in that file. dest_filename = tempfile(pattern = ''rHistogram_Tipped_'', tmpdir = mainDir) dest_filename = paste(dest_filename, ''.jpg'',sep="") print(dest_filename, quote=FALSE); jpeg(filename=dest_filename); hist(InputDataSet$tipped, col = ''lightgreen'', xlab=''Tipped'', ylab = ''Counts'', main = ''Histogram, Tipped''); dev.off(); # Open a pdf file and output histograms of tip amount and fare amount. # Outputs two plots in one row dest_filename = tempfile(pattern = ''rHistograms_Tip_and_Fare_Amount_'', tmpdir = mainDir) dest_filename = paste(dest_filename, ''.pdf'',sep="") print(dest_filename, quote=FALSE); pdf(file=dest_filename, height=4, width=7); par(mfrow=c(1,2)); hist(InputDataSet$tip_amount, col = ''lightgreen'', xlab=''Tip amount ($)'', ylab = ''Counts'', main = ''Histogram, Tip amount'', xlim = c(0,40), 100); hist(InputDataSet$fare_amount, col = ''lightgreen'', xlab=''Fare amount ($)'', ylab = ''Counts'', main = ''Histogram, Fare amount'', xlim = c(0,100), 100); dev.off(); # Open a pdf file and output an xyplot of tip amount vs. fare amount using lattice; # Only 10,000 sampled observations are plotted here, otherwise file is large. dest_filename = tempfile(pattern = ''rXYPlots_Tip_vs_Fare_Amount_'', tmpdir = mainDir) dest_filename = paste(dest_filename, ''.pdf'',sep="") print(dest_filename, quote=FALSE); pdf(file=dest_filename, height=4, width=4); plot(tip_amount ~ fare_amount, data = InputDataSet[sample(nrow(InputDataSet), 10000), ], ylim = c(0,50), xlim = c(0,150), cex=.5, pch=19, col=''darkgreen'', main = ''Tip amount by Fare amount'', xlab=''Fare Amount ($)'', ylab = ''Tip Amount ($)''); dev.off();', @input_data_1 = @query END
Bu betikte anlaşılması gereken önemli noktalar şunlardır:
Saklı yordam içindeki SELECT sorgusunun çıktısı varsayılan R veri çerçevesinde
InputDataSetdepolanır. Daha sonra gerçek grafik dosyalarını oluşturmak için çeşitli R çizim işlevleri çağrılabilir. Katıştırılmış R betiğinin çoğu, örneğinplotveyahistgibi, bu grafik fonksiyonları için seçenekleri temsil eder.Bu komutu SQL Server'da dış betik olarak çalıştırdığınızdan R cihazı kapalı olarak ayarlanır. Genellikle R'de, üst düzey bir çizim komutu gönderdiğinizde R, cihaz adı verilen bir grafik penceresi açar. Bir dosyaya yazıyorsanız veya çıkışı başka bir şekilde işliyorsanız cihazı kapatabilirsiniz.
Tüm dosyalar C:\temp\Plots yerel klasörüne kaydedilir. Hedef klasör, saklı yordamın bir parçası olarak R betiğine sağlanan bağımsız değişkenler tarafından tanımlanır. Dosyaların çıkışını farklı bir klasöre almak için saklı yordam içinde yer alan R betiğindeki
mainDirdeğişkeninin değerini değiştirin. Betiği farklı biçimlerde, daha fazla dosyada vb. çıkış yapmak için de değiştirebilirsiniz.
Saklı yordamı çalıştır
İkili çizim verilerini JPEG ve PDF dosya biçimlerine aktarmak için aşağıdaki deyimi çalıştırın.
EXEC RPlotHist
Results
STDOUT message(s) from external script:
[1] Creating output plot files:[1] C:\temp\plots\rHistogram_Tipped_18887f6265d4.jpg[1]
C:\temp\plots\rHistograms_Tip_and_Fare_Amount_1888441e542c.pdf[1]
C:\temp\plots\rXYPlots_Tip_vs_Fare_Amount_18887c9d517b.pdf
Dosya adlarındaki sayılar, var olan bir dosyaya yazmaya çalışırken hata almadığınızdan emin olmak için rastgele oluşturulur.
Çıktıyı görüntüleme
Çizimi görüntülemek için hedef klasörü açın ve saklı yordamda R kodu tarafından oluşturulan dosyaları gözden geçirin.
STDOUT iletisinde belirtilen klasöre gidin (örnekte bu C:\temp\plots)
İpucu alan gezi sayısını ve ipucu olmayan yolculukları göstermek için açın
rHistogram_Tipped.jpg(bu histogram, önceki adımda oluşturduğunuza benzer).İpucu tutarlarının dağılımını görüntülemek için açın
rHistograms_Tip_and_Fare_Amount.pdfve ücret tutarlarına göre çizilir.
rXYPlots_Tip_vs_Fare_Amount.pdf'ı açarak x ekseninde fare miktarı ve y ekseninde bahşiş miktarı olan bir dağılım grafiğini görüntüleyin.
Sonraki Adımlar
Bu makalede şunları yapacaksınız:
- Örnek veriler gözden geçirildi
- T-SQL'de R kullanılarak oluşturulan çizimler
- Birden çok dosya biçiminde çıkış çizimleri