Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro: SQL Server 2016 (13.x) a novější verze
Azure SQL Managed Instance
Ve čtvrté části této pětidílné série kurzů se naučíte trénovat model strojového učení pomocí jazyka R. Model vytrénujete pomocí datových funkcí, které jste vytvořili v předchozí části, a pak uložíte natrénovaný model do tabulky SQL Serveru. V tomto případě jsou balíčky R již nainstalovány se službami R (In-Database), takže všechno je možné provést z SQL.
V tomto článku:
- Vytvoření a trénování modelu pomocí uložené procedury SQL
- Uložení natrénovaného modelu do tabulky SQL
V první části jste nainstalovali požadavky a obnovili ukázkovou databázi.
Ve druhé části jste zkontrolovali ukázková data a vygenerovali několik grafů.
Ve třetí části jste se naučili vytvářet funkce z nezpracovaných dat pomocí funkce Transact-SQL. Potom jste tuto funkci volali z uložené procedury a vytvořili tabulku obsahující hodnoty funkcí.
V 5. části se dozvíte, jak zprovoznit modely, které jste natrénovali a uložili ve čtvrté části.
Vytvoření uložené procedury
Při volání jazyka R z T-SQL použijete systémovou uloženou proceduru sp_execute_external_script. U procesů, které často opakujete, například opětovné trénování modelu, je však jednodušší zapouzdření volání sp_execute_external_script do jiné uložené procedury.
V sadě Management Studio otevřete nové okno dotazu .
Spuštěním následujícího příkazu vytvořte uloženou proceduru RTrainLogitModel. Tato uložená procedura definuje vstupní data a pomocí glm vytvoří logistický regresní model.
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 GOAby se zajistilo, že některá data zůstanou na testování modelu, 70% dat jsou náhodně vybrány z tabulky dat taxislužby pro účely trénování.
Dotaz SELECT používá vlastní skalární funkci fnCalculateDistance k výpočtu přímé vzdálenosti mezi umístěními vyzvednutí a odkládacím umístěním. Výsledky dotazu jsou uloženy ve výchozí vstupní proměnné jazyka R.
InputDatasetSkript jazyka R volá funkci R glm k vytvoření modelu logistické regrese.
Binární proměnná tipped se používá jako popisek nebo sloupec výsledku a model je přizpůsoben pomocí těchto sloupců vlastností: passenger_count, trip_distance, trip_time_in_secs a direct_distance.
Trénovaný model uložený v proměnné
logitObjR je serializován a vrácen jako výstupní parametr.
Trénování a nasazení modelu R pomocí uložené procedury
Protože uložená procedura již obsahuje definici vstupních dat, nemusíte zadávat vstupní dotaz.
Pokud chcete vytrénovat a nasadit model R, zavolejte uloženou proceduru a vložte ji do databázové tabulky nyc_taxi_models, abyste ji mohli použít pro budoucí předpovědi:
DECLARE @model VARBINARY(MAX); EXEC RTrainLogitModel @model OUTPUT; INSERT INTO nyc_taxi_models (name, model) VALUES('RTrainLogit_model', @model);Podívejte se na okno Zprávy v sadě Management Studio pro zprávy, které by se směrovaly do datového proudu stdout jazyka R, jako je tato zpráva:
"Zprávy STDOUT z externího skriptu: Řádky přečtené: 1193025, celkový počet zpracovaných řádků: 1193025, celkový čas bloku dat: 0,093 sekund"
Po dokončení příkazu otevřete tabulku nyc_taxi_models. Zpracování dat a přizpůsobení modelu může nějakou dobu trvat.
Můžete vidět, že byl přidán jeden nový řádek, který obsahuje serializovaný model ve sloupcovém modelu a název modelu RTrainLogit_model v názvu sloupce.
model name ---------------------------- ------------------ 0x580A00000002000302020.... RTrainLogit_model
V další části tohoto kurzu použijete natrénovaný model ke generování předpovědí.
Další kroky
V tomto článku:
- Vytvoření a trénování modelu pomocí uložené procedury SQL
- Uložili jste natrénovaný model do tabulky SQL.