Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för: SQL Server 2017 (14.x) och senare versioner
Azure SQL Managed Instance
I del fyra i den här självstudieserien i fyra delar distribuerar du en linjär regressionsmodell som utvecklats i Python till en SQL Server-databas med hjälp av Machine Learning Services eller Stordatakluster.
I del fyra i den här självstudieserien i fyra delar distribuerar du en linjär regressionsmodell som utvecklats i Python till en SQL Server-databas med hjälp av Machine Learning Services.
I del fyra i den här självstudieserien i fyra delar distribuerar du en linjär regressionsmodell som utvecklats i Python till en Azure SQL Managed Instance-databas med hjälp av Machine Learning Services.
I den här artikeln får du lära dig att:
- Skapa en lagrad procedur som genererar maskininlärningsmodellen
- Lagra modellen i en databastabell
- Skapa en lagrad procedur som gör förutsägelser med hjälp av modellen
- Köra modellen med nya data
I del ett lärde du dig hur du återställer exempeldatabasen.
I del två lärde du dig att läsa in data från en databas till en Python-dataram och förbereda data i Python.
I del tre lärde du dig att träna en linjär regressionsmaskininlärningsmodell i Python.
Förutsättningar
- Del fyra i den här självstudien förutsätter att du har slutfört del ett och dess förutsättningar.
Skapa en lagrad procedur som genererar modellen
Använd nu Python-skript för att skapa en lagrad procedur generate_rental_py_model som tränar och genererar en linjär regressionsmodell med hjälp av LinearRegression från scikit-learn.
Kör följande T-SQL-instruktion i Azure Data Studio för att skapa den lagrade proceduren för att träna modellen.
-- Stored procedure that trains and generates a Python model using the rental_data and a linear regression algorithm
DROP PROCEDURE IF EXISTS generate_rental_py_model;
go
CREATE PROCEDURE generate_rental_py_model (@trained_model varbinary(max) OUTPUT)
AS
BEGIN
EXECUTE sp_execute_external_script
@language = N'Python'
, @script = N'
from sklearn.linear_model import LinearRegression
import pickle
df = rental_train_data
# Get all the columns from the dataframe.
columns = df.columns.tolist()
# Store the variable well be predicting on.
target = "RentalCount"
# Initialize the model class.
lin_model = LinearRegression()
# Fit the model to the training data.
lin_model.fit(df[columns], df[target])
# Before saving the model to the DB table, convert it to a binary object
trained_model = pickle.dumps(lin_model)'
, @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
Lagra modellen i en databastabell
Skapa en tabell i Databasen TutorialDB och spara sedan modellen i tabellen.
Kör följande T-SQL-instruktion i Azure Data Studio för att skapa en tabell med namnet dbo.rental_py_models som används för att lagra modellen.
USE TutorialDB; DROP TABLE IF EXISTS dbo.rental_py_models; GO CREATE TABLE dbo.rental_py_models ( model_name VARCHAR(30) NOT NULL DEFAULT('default model') PRIMARY KEY, model VARBINARY(MAX) NOT NULL ); GOSpara modellen i tabellen som ett binärt objekt med modellnamnet linear_model.
DECLARE @model VARBINARY(MAX); EXECUTE generate_rental_py_model @model OUTPUT; INSERT INTO rental_py_models (model_name, model) VALUES('linear_model', @model);
Skapa en lagrad procedur som gör förutsägelser
Skapa en lagrad procedur py_predict_rentalcount som gör förutsägelser med hjälp av den tränade modellen och en uppsättning nya data. Kör T-SQL nedan i Azure Data Studio.
DROP PROCEDURE IF EXISTS py_predict_rentalcount; GO CREATE PROCEDURE py_predict_rentalcount (@model varchar(100)) AS BEGIN DECLARE @py_model varbinary(max) = (select model from rental_py_models where model_name = @model); EXECUTE sp_execute_external_script @language = N'Python', @script = N' # Import the scikit-learn function to compute error. from sklearn.metrics import mean_squared_error import pickle import pandas rental_model = pickle.loads(py_model) df = rental_score_data # Get all the columns from the dataframe. columns = df.columns.tolist() # Variable you will be predicting on. target = "RentalCount" # Generate the predictions for the test set. lin_predictions = rental_model.predict(df[columns]) print(lin_predictions) # Compute error between the test predictions and the actual values. lin_mse = mean_squared_error(lin_predictions, df[target]) #print(lin_mse) predictions_df = pandas.DataFrame(lin_predictions) OutputDataSet = pandas.concat([predictions_df, df["RentalCount"], df["Month"], df["Day"], df["WeekDay"], df["Snow"], df["Holiday"], df["Year"]], axis=1) ' , @input_data_1 = N'Select "RentalCount", "Year" ,"Month", "Day", "WeekDay", "Snow", "Holiday" from rental_data where Year = 2015' , @input_data_1_name = N'rental_score_data' , @params = N'@py_model varbinary(max)' , @py_model = @py_model with result sets (("RentalCount_Predicted" float, "RentalCount" float, "Month" float,"Day" float,"WeekDay" float,"Snow" float,"Holiday" float, "Year" float)); END; GOSkapa en tabell för lagring av förutsägelserna.
DROP TABLE IF EXISTS [dbo].[py_rental_predictions]; GO CREATE TABLE [dbo].[py_rental_predictions]( [RentalCount_Predicted] [int] NULL, [RentalCount_Actual] [int] NULL, [Month] [int] NULL, [Day] [int] NULL, [WeekDay] [int] NULL, [Snow] [int] NULL, [Holiday] [int] NULL, [Year] [int] NULL ) ON [PRIMARY] GOKör den lagrade proceduren för att förutsäga antalet uthyrningar
--Insert the results of the predictions for test set into a table INSERT INTO py_rental_predictions EXEC py_predict_rentalcount 'linear_model'; -- Select contents of the table SELECT * FROM py_rental_predictions;Du bör se resultat som liknar följande.
Du har skapat, tränat och driftsatt en modell. Du använde sedan modellen i en lagrad procedur för att förutsäga värden baserat på nya data.
Nästa steg
I del fyra i den här självstudieserien har du slutfört följande steg:
- Skapa en lagrad procedur som genererar maskininlärningsmodellen
- Lagra modellen i en databastabell
- Skapa en lagrad procedur som gör förutsägelser med hjälp av modellen
- Köra modellen med nya data
Mer information om hur du använder Python med SQL-maskininlärning finns i: