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 dördüncü bölümünde R kullanarak makine öğrenmesi modelini eğitmeyi öğreneceksiniz. Önceki bölümde oluşturduğunuz veri özelliklerini kullanarak modeli eğitip eğitilen modeli bir SQL Server tablosuna kaydedeceksiniz. Bu durumda, R paketleri R Services (In-Database) ile zaten yüklüdür, böylece her şey SQL'den yapılabilir.
Bu makalede şunları yapacaksınız:
- SQL saklı yordamı kullanarak model oluşturmak ve eğitmek
- Eğitilen modeli SQL tablosuna kaydetme
Birinci bölümde önkoşulları yüklemiş ve örnek veritabanını geri yüklemişsinizdir.
İkinci bölümde örnek verileri gözden geçirdiniz ve bazı çizimler oluşturacaksınız.
Üçüncü bölümde, bir Transact-SQL işlevi kullanarak ham verilerden özellik oluşturmayı öğrendinsiniz. Ardından bu işlevi saklı yordamdan çağırarak özellik değerlerini içeren bir tablo oluşturacaksı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.
Saklı yordamı oluştur
T-SQL'den R'yi çağırırken, sp_execute_external_script sistem saklı yordamını kullanırsınız. Ancak, modeli yeniden eğitme gibi sık tekrarladığınız işlemler için çağrıyı sp_execute_external_script başka bir saklı yordamda kapsüllemek daha kolaydır.
Management Studio'da yeni bir Sorgu penceresi açın.
Aşağıdaki deyimi yürütüp RTrainLogitModel saklı yordamını oluşturun. Bu saklı yordam giriş verilerini tanımlar ve lojistik regresyon modeli oluşturmak için glm kullanır.
CREATE PROCEDURE [dbo].[RTrainLogitModel] (@trained_model varbinary(max) OUTPUT) AS BEGIN DECLARE @inquery nvarchar(max) = N' select tipped, fare_amount, passenger_count,trip_time_in_secs,trip_distance, pickup_datetime, dropoff_datetime, dbo.fnCalculateDistance(pickup_latitude, pickup_longitude, dropoff_latitude, dropoff_longitude) as direct_distance from nyctaxi_sample tablesample (70 percent) repeatable (98052) ' EXEC sp_execute_external_script @language = N'R', @script = N' ## Create model logitObj <- glm(tipped ~ passenger_count + trip_distance + trip_time_in_secs + direct_distance, data = InputDataSet, family = binomial) summary(logitObj) ## Serialize model trained_model <- as.raw(serialize(logitObj, NULL)); ', @input_data_1 = @inquery, @params = N'@trained_model varbinary(max) OUTPUT', @trained_model = @trained_model OUTPUT; END GOModeli test etmek için bazı verilerin bırakıldığından emin olmak için, eğitim amacıyla taksi veri tablosundan verilerin 70% rastgele seçilir.
SELECT sorgusu, toplama ve bırakma konumları arasındaki doğrudan mesafeyi hesaplamak için fnCalculateDistance özel skaler işlevini kullanır. Sorgunun sonuçları varsayılan R giriş değişkeninde
InputDatasetdepolanır.R betiği, lojistik regresyon modelini oluşturmak için R işlevi glm'sini çağırır.
İkili değişken tippedetiketi veya sonuç sütunu olarak kullanılır ve model şu özellik sütunları kullanılarak uygundur: passenger_count, trip_distance, trip_time_in_secs ve direct_distance.
R değişkenine
logitObjkaydedilen eğitilmiş model serileştirilir ve çıkış parametresi olarak döndürülür.
Saklı yordamı kullanarak R modelini eğitin ve dağıtın
Saklı yordam giriş verilerinin tanımını zaten içerdiğinden, giriş sorgusu sağlamanız gerekmez.
R modelini eğitmek ve dağıtmak için saklı yordamı çağırın ve nyc_taxi_models veritabanı tablosuna ekleyin; böylece gelecekteki tahminlerde kullanabilirsiniz:
DECLARE @model VARBINARY(MAX); EXEC RTrainLogitModel @model OUTPUT; INSERT INTO nyc_taxi_models (name, model) VALUES('RTrainLogit_model', @model);Şu ileti gibi R'nin stdout akışına aktarılacak iletiler için Management Studio'nun İletiler penceresini izleyin:
"Dış betikten STDOUT iletileri: Satır Okuma: 1193025, İşlenen Toplam Satır sayısı: 1193025, Toplam Öbek Süresi: 0,093 saniye"
Deyimi tamamlandığında tablo nyc_taxi_models açın. Verilerin işlenmesi ve modelin uygun şekilde işlenmesi biraz zaman alabilir.
Sütun modelinde seri hale getirilmiş modeli ve sütun adında RTrainLogit_model model adını içeren yeni bir satır eklendiğini görebilirsiniz.
model name ---------------------------- ------------------ 0x580A00000002000302020.... RTrainLogit_model
Bu öğreticinin sonraki bölümünde tahmin oluşturmak için eğitilen modeli kullanacaksınız.
Sonraki Adımlar
Bu makalede şunları yapacaksınız:
- SQL saklı yordamı kullanarak model oluşturma ve eğitme
- Eğitilen modeli sql tablosuna kaydetme