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 hızlı başlangıçta Python kullanarak tahmine dayalı bir model oluşturacak ve eğiteceksiniz. Modeli SQL Server örneğinizdeki bir tabloya kaydedecek ve ardından SQL Server Machine Learning Services, Azure SQL Yönetilen Örneği Machine Learning Services veya SQL Server Büyük Veri Kümeleri kullanarak yeni verilerden değerleri tahmin etmek için modeli kullanacaksınız.
SQL'de çalışan iki saklı yordam oluşturup yürüteceksiniz. İlki klasik Iris çiçek veri kümesini kullanır ve çiçek özelliklerine göre bir Iris türünü tahmin etmek için bir Naïve Bayes modeli oluşturur. İkinci yordam puanlamadır; ilk yordamda oluşturulan modeli çağırarak yeni verilere dayalı bir tahmin kümesi oluşturur. Python kodunu bir SQL saklı yordamına yerleştirerek, işlemler SQL'de yer alır, yeniden kullanılabilir ve diğer saklı yordamlar ve istemci uygulamaları tarafından çağrılabilir.
Bu hızlı başlangıcı tamamlayarak şunları öğreneceksiniz:
- Python kodunu saklı yordama ekleme
- Saklı prosedür üzerindeki girdiler aracılığıyla kodunuza veri aktarma yöntemleri.
- Saklı yordamlar modelleri kullanıma hazır hale getirmek için nasıl kullanılır?
Önkoşullar
Bu hızlı başlangıcı çalıştırmak için aşağıdaki önkoşullara ihtiyacınız vardır.
Bu platformlardan birinde bir SQL veritabanı:
- SQL Server Machine Learning Services. Yüklemek için Windows yükleme kılavuzuna veya Linux yükleme kılavuzuna bakın.
- SQL Server Büyük Veri Kümeleri. Nasıl yapıldığını görün: SQL Server Büyük Veri Kümelerinde Makine Öğrenimi Hizmetlerini etkinleştirme.
- Azure SQL Yönetilen Örneği Makine Öğrenimi Hizmetleri. Bilgi için bkz. Azure SQL Yönetilen Örnek Makine Öğrenimi Hizmetleri'ne genel bakış.
Python betikleri içeren SQL sorgularını çalıştırmaya yönelik bir araç. Bu hızlı başlangıçta Azure Data Studio kullanılır.
Bu alıştırmada kullanılan örnek veriler Iris örnek verileridir. Örnek veritabanı irissql oluşturmak için Iris tanıtım verileri'ndeki yönergeleri izleyin.
Saklı yordam oluşturarak model oluşturun
Bu adımda, sonuçları tahmin etmek için bir model oluşturan bir saklı yordam oluşturacaksınız.
Azure Data Studio'yu açın, SQL örneğine bağlanın ve yeni bir sorgu penceresi açın.
irissql veritabanına bağlanın.
USE irissql GOYeni bir saklı yordam oluşturmak için aşağıdaki kodu kopyalayın.
Bu yordam yürütüldüğünde, Python oturumunu başlatmak için sp_execute_external_script çağırır.
Python kodunuz için gereken girişler, bu saklı yordamda giriş parametreleri olarak aktarılır. Çıktı, makine öğrenmesi algoritması için Python scikit-learn kitaplığını temel alan eğitilmiş bir model olacaktır.
Bu kod, modeli seri hale getirmek için pickle kullanır. Model, iris_data tablosundaki 0 ile 4 arasında sütunlardaki veriler kullanılarak eğitilir.
Prosedürün ikinci bölümünde gördüğünüz parametreler, veri girişlerini ve model çıkışlarını ifade eder. Mümkün olduğunca, saklı yordam içinde çalışan Python kodunun, çalışma sırasında aktarılacak saklı yordam giriş ve çıkışlarına haritalayan açıkça tanımlanmış giriş ve çıkışlara sahip olmasını istiyorsunuz.
CREATE PROCEDURE generate_iris_model (@trained_model VARBINARY(max) OUTPUT) AS BEGIN EXECUTE sp_execute_external_script @language = N'Python' , @script = N' import pickle from sklearn.naive_bayes import GaussianNB GNB = GaussianNB() trained_model = pickle.dumps(GNB.fit(iris_data[["Sepal.Length", "Sepal.Width", "Petal.Length", "Petal.Width"]], iris_data[["SpeciesId"]].values.ravel())) ' , @input_data_1 = N'select "Sepal.Length", "Sepal.Width", "Petal.Length", "Petal.Width", "SpeciesId" from iris_data' , @input_data_1_name = N'iris_data' , @params = N'@trained_model varbinary(max) OUTPUT' , @trained_model = @trained_model OUTPUT; END; GOSaklı yordamın mevcut olup olmadığını doğrulayın.
Önceki adımdaki T-SQL betiği hatasız çalıştırıldıysa, generate_iris_model adlı yeni bir saklı yordam oluşturulur ve irissql veritabanına eklenir. Saklı yordamları Azure Data Studio Nesne Gezgini'ndeProgramlanabilirlik bölümünde bulabilirsiniz.
Modelleri oluşturmak ve eğitmek için prosedürü yürüt
Bu adımda, ekli kodu çalıştırma yordamını yürütür ve çıkış olarak eğitilmiş ve serileştirilmiş bir model oluşturursunuz.
Veritabanınızda yeniden kullanılmak üzere depolanan modeller bayt akışı olarak serileştirilir ve veritabanı tablosundaki VARBINARY (MAX) sütununda depolanır. Model oluşturulduktan, eğitildikten, seri hale getirildikten ve bir veritabanına kaydedildikten sonra, diğer yordamlar veya puanlama iş yüklerinde PREDICT T-SQL işlevi tarafından çağrılabilir.
Prosedürü çalıştırmak için aşağıdaki betiği çalıştırın. Saklı yordamı yürütmek için belirli ifade dördüncü satırdadır
EXECUTE.Bu özel betik, aynı prosedürü yeniden çalıştırarak oluşturulan yeni modellere yer açmak için aynı ada sahip mevcut modeli ("Naive Bayes") siler. Model silinmeden, nesnenin zaten var olduğunu belirten bir hata oluşur. Model, irissql veritabanını oluşturduğunuzda sağlanan iris_models adlı bir tabloda depolanır.
DECLARE @model varbinary(max); DECLARE @new_model_name varchar(50) SET @new_model_name = 'Naive Bayes' EXECUTE generate_iris_model @model OUTPUT; DELETE iris_models WHERE model_name = @new_model_name; INSERT INTO iris_models (model_name, model) values(@new_model_name, @model); GOModelin eklendiğini doğrulayın.
SELECT * FROM dbo.iris_modelsResults
model_name model Naive Bayes 0x800363736B6C6561726E2E6E616976655F62617965730A...
Tahminler oluşturmak için saklı prosedür oluşturma ve yürütme
Artık bir model oluşturduğunuza, eğitdiğinize ve kaydettiğinize göre sonraki adıma geçin: tahminler oluşturan bir saklı yordam oluşturma. Serileştirilmiş modeli yükleyen ve ona puan vermesi için yeni veri girişleri sağlayan bir Python betiğini çalıştırmak amacıyla sp_execute_external_script çağıracaksınız.
Puanlama gerçekleştiren saklı yordamı oluşturmak için aşağıdaki kodu çalıştırın. Çalışma zamanında, bu yordam bir ikili model yükler, girdi olarak sütunları
[1,2,3,4]kullanır ve sütunları[0,5,6]çıkış olarak belirtir.CREATE PROCEDURE predict_species (@model VARCHAR(100)) AS BEGIN DECLARE @nb_model VARBINARY(max) = ( SELECT model FROM iris_models WHERE model_name = @model ); EXECUTE sp_execute_external_script @language = N'Python' , @script = N' import pickle irismodel = pickle.loads(nb_model) species_pred = irismodel.predict(iris_data[["Sepal.Length", "Sepal.Width", "Petal.Length", "Petal.Width"]]) iris_data["PredictedSpecies"] = species_pred OutputDataSet = iris_data[["id","SpeciesId","PredictedSpecies"]] print(OutputDataSet) ' , @input_data_1 = N'select id, "Sepal.Length", "Sepal.Width", "Petal.Length", "Petal.Width", "SpeciesId" from iris_data' , @input_data_1_name = N'iris_data' , @params = N'@nb_model varbinary(max)' , @nb_model = @nb_model WITH RESULT SETS(( "id" INT , "SpeciesId" INT , "SpeciesId.Predicted" INT )); END; GOSaklı yordamı yürüterek modelin adını "Naive Bayes" olarak verin, böylece yordam hangi modelin kullanılacağını bilir.
EXECUTE predict_species 'Naive Bayes'; GOSaklı yordamı çalıştırdığınızda bir Python data.frame döndürür. Bu T-SQL satırı, döndürülen sonuçların şemasını belirtir:
WITH RESULT SETS ( ("id" int, "SpeciesId" int, "SpeciesId.Predicted" int));. Sonuçları yeni bir tabloya ekleyebilir veya bir uygulamaya döndürebilirsiniz.
Sonuçlar, giriş olarak çiçek özelliklerini kullanan türler hakkında 150 tahmindir. Gözlemlerin çoğu için tahmin edilen türler gerçek türle eşleşir.
Bu örnek hem eğitim hem de puanlama için Python iris veri kümesi kullanılarak basitleştirildi. Daha tipik bir yaklaşım, yeni verileri almak için bir SQL sorgusu çalıştırmayı ve bunu Olarak Python'a
InputDataSetgeçirmeyi içerir.
Sonuç
Bu alıştırmada, farklı görevlere adanmış saklı yordamlar oluşturmayı öğrendiniz; her bir saklı yordam, bir Python işlemini başlatmak için sistem saklı yordamı sp_execute_external_script kullandı. Python işlemine girişler sp_execute_external'a parametre olarak geçirilir. Hem Python betiğinin kendisi hem de veritabanındaki veri değişkenleri giriş olarak geçirilir.
Genel olarak, Azure Data Studio'yu yalnızca şık Python koduyla veya satır tabanlı çıkış döndüren basit Python koduyla kullanmayı planlamanız gerekir. Azure Data Studio bir araç olarak T-SQL gibi sorgu dillerini destekler ve düzleştirilmiş satır kümeleri döndürür. Kodunuz dağılım grafiği veya histogram gibi görsel çıkışlar oluşturuyorsa, görüntüyü saklı yordamın dışında işleyebilen ayrı bir araç veya son kullanıcı uygulaması gerekir.
Bir dizi işlemi işleyen her şey dahil betik yazmaya alışkın olan bazı Python geliştiricileri için görevleri ayrı yordamlar halinde düzenlemek gereksiz görünebilir. Ancak eğitim ve puanlama farklı kullanım örneklerine sahiptir. Bunları ayırarak, her görevi farklı bir zamanlamaya ve her işlem için kapsam izinlerine yerleştirebilirsiniz.
Son bir avantaj, işlemlerin parametreler kullanılarak değiştirilebiliyor olmasıdır. Bu alıştırmada, modeli oluşturan Python kodu (bu örnekte "Naive Bayes" olarak adlandırılır) bir puanlama işleminde modeli çağıran ikinci bir saklı yordama giriş olarak geçirildi. Bu alıştırmada yalnızca bir model kullanılır, ancak puanlama görevinde modelin parametreleştirilmesinin bu betiği nasıl daha kullanışlı hale getireceğini tahmin edebilirsiniz.
Sonraki Adımlar
SQL makine öğrenmesi ile Python öğreticileri hakkında daha fazla bilgi için bkz: