Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op: SQL Server 2016 (13.x) en latere versies
van Azure SQL Managed Instance
In deel vier van deze vierdelige reeks zelfstudies implementeert u een machine learning-model dat in R is ontwikkeld in SQL Server Machine Learning Services of op Big Data-clusters.
In deel vier van deze vierdelige reeks zelfstudies implementeert u een machine learning-model dat in R is ontwikkeld in SQL Server met behulp van Machine Learning Services.
In deel vier van deze vierdelige reeks zelfstudies implementeert u een machine learning-model dat in R is ontwikkeld in SQL Server met behulp van SQL Server R Services.
In deel vier van deze vierdelige reeks zelfstudies implementeert u een machine learning-model dat in R is ontwikkeld in Azure SQL Managed Instance met behulp van Machine Learning Services.
In dit artikel leert u het volgende:
- Een opgeslagen procedure maken waarmee het machine learning-model wordt gegenereerd
- Het model opslaan in een databasetabel
- Een opgeslagen procedure maken die voorspellingen doet met behulp van het model
- Het model uitvoeren met nieuwe gegevens
In deel 1 hebt u geleerd hoe u de voorbeelddatabase kunt herstellen.
In deel twee hebt u geleerd hoe u een voorbeelddatabase importeert en vervolgens de gegevens voorbereidt die moeten worden gebruikt voor het trainen van een voorspellend model in R.
In deel drie hebt u geleerd hoe u meerdere machine learning-modellen maakt en traint in R en vervolgens het meest nauwkeurige model kiest.
Vereiste voorwaarden
In deel vier van deze zelfstudie wordt ervan uitgegaan dat u aan de vereisten van deel 1 hebt voldaan en dat u de stappen in deel 2 en deel drie hebt voltooid.
Een opgeslagen procedure maken waarmee het model wordt gegenereerd
In deel drie van deze reeks zelfstudies hebt u besloten dat een beslissingsstructuurmodel (dtree) het meest nauwkeurig was. Maak nu met behulp van de R-scripts die u hebt ontwikkeld een opgeslagen procedure (generate_rental_model) die het dtree-model traint en genereert met behulp van rpart uit het R-pakket.
Voer de volgende opdrachten uit in Azure Data Studio.
USE [TutorialDB]
DROP PROCEDURE IF EXISTS generate_rental_model;
GO
CREATE PROCEDURE generate_rental_model (@trained_model VARBINARY(max) OUTPUT)
AS
BEGIN
EXECUTE sp_execute_external_script @language = N'R'
, @script = N'
rental_train_data$Month <- factor(rental_train_data$Month);
rental_train_data$Day <- factor(rental_train_data$Day);
rental_train_data$Holiday <- factor(rental_train_data$Holiday);
rental_train_data$Snow <- factor(rental_train_data$Snow);
rental_train_data$WeekDay <- factor(rental_train_data$WeekDay);
#Create a dtree model and train it using the training data set
library(rpart);
model_dtree <- rpart(RentalCount ~ Month + Day + WeekDay + Snow + Holiday, data = rental_train_data);
#Serialize the model before saving it to the database table
trained_model <- as.raw(serialize(model_dtree, connection=NULL));
'
, @input_data_1 = N'
SELECT RentalCount
, Year
, Month
, Day
, WeekDay
, Snow
, Holiday
FROM dbo.rental_data
WHERE Year < 2015
'
, @input_data_1_name = N'rental_train_data'
, @params = N'@trained_model varbinary(max) OUTPUT'
, @trained_model = @trained_model OUTPUT;
END;
GO
Het model opslaan in een databasetabel
Maak een tabel in de TutorialDB-database en sla het model vervolgens op in de tabel.
Maak een tabel (
rental_models) voor het opslaan van het model.USE TutorialDB; DROP TABLE IF EXISTS rental_models; GO CREATE TABLE rental_models ( model_name VARCHAR(30) NOT NULL DEFAULT('default model') PRIMARY KEY , model VARBINARY(MAX) NOT NULL ); GOSla het model op in de tabel als een binair object, met de modelnaam DTree.
-- Save model to table TRUNCATE TABLE rental_models; DECLARE @model VARBINARY(MAX); EXECUTE generate_rental_model @model OUTPUT; INSERT INTO rental_models ( model_name , model ) VALUES ( 'DTree' , @model ); SELECT * FROM rental_models;
Een opgeslagen procedure maken waarmee voorspellingen worden gedaan
Maak een opgeslagen procedure (predict_rentalcount_new) die voorspellingen doet met behulp van het getrainde model en een set nieuwe gegevens.
-- Stored procedure that takes model name and new data as input parameters and predicts the rental count for the new data
USE [TutorialDB]
DROP PROCEDURE IF EXISTS predict_rentalcount_new;
GO
CREATE PROCEDURE predict_rentalcount_new (
@model_name VARCHAR(100)
, @input_query NVARCHAR(MAX)
)
AS
BEGIN
DECLARE @model VARBINARY(MAX) = (
SELECT model
FROM rental_models
WHERE model_name = @model_name
);
EXECUTE sp_execute_external_script @language = N'R'
, @script = N'
#Convert types to factors
rentals$Month <- factor(rentals$Month);
rentals$Day <- factor(rentals$Day);
rentals$Holiday <- factor(rentals$Holiday);
rentals$Snow <- factor(rentals$Snow);
rentals$WeekDay <- factor(rentals$WeekDay);
#Before using the model to predict, we need to unserialize it
rental_model <- unserialize(model);
#Call prediction function
rental_predictions <- predict(rental_model, rentals);
rental_predictions <- data.frame(rental_predictions);
'
, @input_data_1 = @input_query
, @input_data_1_name = N'rentals'
, @output_data_1_name = N'rental_predictions'
, @params = N'@model varbinary(max)'
, @model = @model
WITH RESULT SETS(("RentalCount_Predicted" FLOAT));
END;
GO
Het model uitvoeren met nieuwe gegevens
U kunt nu de opgeslagen procedure predict_rentalcount_new gebruiken om het aantal huur te voorspellen uit nieuwe gegevens.
-- Use the predict_rentalcount_new stored procedure with the model name and a set of features to predict the rental count
EXECUTE dbo.predict_rentalcount_new @model_name = 'DTree'
, @input_query = '
SELECT CONVERT(INT, 3) AS Month
, CONVERT(INT, 24) AS Day
, CONVERT(INT, 4) AS WeekDay
, CONVERT(INT, 1) AS Snow
, CONVERT(INT, 1) AS Holiday
';
GO
U zou een resultaat moeten zien dat er als volgt uitziet.
RentalCount_Predicted
332.571428571429
U hebt een model gemaakt, getraind en geïmplementeerd in een database. Vervolgens hebt u dat model in een opgeslagen procedure gebruikt om waarden te voorspellen op basis van nieuwe gegevens.
De hulpbronnen opschonen
Wanneer u klaar bent met het gebruik van de TutorialDB-database, verwijdert u deze van uw server.
Volgende stappen
In deel vier van deze reeks zelfstudies hebt u geleerd hoe u het volgende kunt doen:
- Een opgeslagen procedure maken waarmee het machine learning-model wordt gegenereerd
- Het model opslaan in een databasetabel
- Een opgeslagen procedure maken die voorspellingen doet met behulp van het model
- Het model uitvoeren met nieuwe gegevens
Zie voor meer informatie over het gebruik van R in Machine Learning Services: