Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
A következőkre vonatkozik: Sql Server 2016 (13.x) és újabb verziók
felügyelt Azure SQL-példány
Az ötrészes oktatóanyag-sorozat negyedik részében megtanulhatja, hogyan taníthat be gépi tanulási modellt R használatával. Betanítsa a modellt az előző részben létrehozott adatfunkciókkal, majd mentse a betanított modellt egy SQL Server-táblába. Ebben az esetben az R-csomagok már telepítve vannak az R-szolgáltatásokkal (In-Database), így minden elvégezhető az SQL-ből.
Ebben a cikkben a következőket fogja megismerni:
- Modell létrehozása és betanítása TÁROLT SQL-eljárással
- A betanított modell mentése SQL-táblába
Az első részben telepítette az előfeltételeket, és visszaállította a mintaadatbázist.
A második részben áttekintette a mintaadatokat, és létrehozott néhány diagramot.
A harmadik részben megtanulta, hogyan hozhat létre funkciókat nyers adatokból egy Transact-SQL függvény használatával. Ezt követően egy tárolt eljárásból meghívta ezt a függvényt, hogy létrehozhasson egy táblát, amely tartalmazza a funkcióértékeket.
Az ötödik részben megtanulhatja, hogyan lehet üzembe helyezni a negyedik részben betanított és mentett modelleket.
A tárolt eljárás létrehozása
Amikor T-SQL-ből R-t hív meg, a rendszerben tárolt eljárást, sp_execute_external_script használja. A gyakran ismétlődő folyamatok, például egy modell újratanítása esetén azonban egyszerűbb a hívás sp_execute_external_script beágyazása egy másik tárolt eljárásba.
A Management Studióban nyisson meg egy új Lekérdezés ablakot.
Futtassa a következő utasítást a tárolt RTrainLogitModel eljárás létrehozásához. Ez a tárolt eljárás határozza meg a bemeneti adatokat, és a glm használatával hoz létre logisztikai regressziós modellt.
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 GOAnnak érdekében, hogy bizonyos adatok megmaradjanak a modell teszteléséhez, az adatok 70% véletlenszerűen vannak kiválasztva a taxi adattáblából betanítási célokra.
A SELECT lekérdezés az fnCalculateDistance egyéni skaláris függvényt használja a felvételi és a leadási helyek közötti közvetlen távolság kiszámításához. A lekérdezés eredményei az alapértelmezett R bemeneti változóban vannak tárolva.
InputDatasetAz R-szkript meghívja a glm R függvényt a logisztikai regressziós modell létrehozásához.
A billentett bináris változót címke - vagy eredményoszlopként használja a rendszer, és a modell a következő funkcióoszlopok használatával illeszkedik: passenger_count, trip_distance, trip_time_in_secs és direct_distance.
Az R változóban
logitObjmentett betanított modell szerializálva van, és kimeneti paraméterként adja vissza.
Az R-modell betanítása és üzembe helyezése a tárolt eljárással
Mivel a tárolt eljárás már tartalmazza a bemeneti adatok definícióját, nem kell bemeneti lekérdezést megadnia.
Az R-modell betanítása és üzembe helyezése érdekében hívja meg a tárolt eljárást, és szúrja be az adatbázistáblába nyc_taxi_models, hogy későbbi előrejelzésekhez használhassa:
DECLARE @model VARBINARY(MAX); EXEC RTrainLogitModel @model OUTPUT; INSERT INTO nyc_taxi_models (name, model) VALUES('RTrainLogit_model', @model);Tekintse meg a Management Studio Üzenetek ablakát az R stdout streambe csövezett üzenetekhez, például az alábbi üzenethez:
"STDOUT-üzenet külső szkriptből: Sorok olvasása: 1193025, Feldolgozott sorok teljes száma: 1193025, Teljes adattömbidő: 0,093 másodperc"
Amikor az utasítás befejeződött, nyissa meg a táblát nyc_taxi_models. Az adatok feldolgozása és a modell illesztése eltarthat egy ideig.
Láthatja, hogy egy új sor lett hozzáadva, amely tartalmazza az oszlop model szerializált modelljét, és a modell nevét RTrainLogit_model az oszlop name-ban.
model name ---------------------------- ------------------ 0x580A00000002000302020.... RTrainLogit_model
Az oktatóanyag következő részében a betanított modell használatával fog előrejelzéseket generálni.
Következő lépések
Ebben a cikkben a következőt találja:
- Modell létrehozása és betanítása tárolt SQL-eljárással
- A betanított modell mentése SQL-táblába