Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik: Sql Server 2017 (14.x) és újabb verziók
Felügyelt Azure SQL-példány
A négyrészes oktatóanyag-sorozat negyedik részében üzembe helyez egy Pythonban fejlesztett fürtözési modellt egy SQL Server Machine Learning Services vagy Big Data-fürtök használatával.
A négyrészes oktatóanyag-sorozat negyedik részében egy Pythonban kifejlesztett klaszterezési modellt fog telepíteni az SQL Server Machine Learning Services segítségével egy adatbázisba.
A négyrészes oktatóanyag-sorozat negyedik részében egy Pythonban kifejlesztett fürtözési modellt fog üzembe helyezni egy adatbázisba az Azure SQL Managed Instance Machine Learning Services használatával.
Ahhoz, hogy rendszeresen klaszterezhessen, ahogy új ügyfelek regisztrálnak, képesnek kell lennie meghívni a Python-szkriptet bármilyen alkalmazásból. Ehhez üzembe helyezheti a Python-szkriptet egy adatbázisban úgy, hogy a Python-szkriptet egy SQL-ben tárolt eljárásba helyezi. Mivel a modell az adatbázisban fut, közvetlenül betanítható az adatbázisban tárolt adatokkal.
Ebben a szakaszban áthelyezi az imént írt Python-kódot a szerverre, és elindítja a fürtözést.
Ebben a cikkben megtudhatja, hogyan:
- A modellt létrehozó tárolt eljárás létrehozása
- Fürtözés végrehajtása a kiszolgálón
- A fürtözési adatok használata
Az első részben telepítette az előfeltételeket, és visszaállította a mintaadatbázist.
A második részben megtanulta, hogyan készítheti elő az adatokat egy adatbázisból a fürtözés végrehajtására.
A harmadik részben megtanulta, hogyan hozhat létre és taníthat be K-Means fürtözési modellt a Pythonban.
Előfeltételek
- Az oktatóanyag-sorozat negyedik része feltételezi, hogy teljesítette az első rész előfeltételeit, és elvégezte a második és harmadik rész lépéseit.
A modellt létrehozó tárolt eljárás létrehozása
Futtassa a következő T-SQL-szkriptet a tárolt eljárás létrehozásához. Az eljárás újra létrehozza az oktatóanyag-sorozat első és második részében kifejlesztett lépéseket:
- az ügyfelek besorolása a vásárlási és visszaküldési előzmények alapján
- Négy ügyfélcsoport létrehozása a K-Means algoritmus alkalmazásával.
USE [tpcxbb_1gb]
GO
DROP procedure IF EXISTS [dbo].[py_generate_customer_return_clusters];
GO
CREATE procedure [dbo].[py_generate_customer_return_clusters]
AS
BEGIN
DECLARE
-- Input query to generate the purchase history & return metrics
@input_query NVARCHAR(MAX) = N'
SELECT
ss_customer_sk AS customer,
CAST( (ROUND(COALESCE(returns_count / NULLIF(1.0*orders_count, 0), 0), 7) ) AS FLOAT) AS orderRatio,
CAST( (ROUND(COALESCE(returns_items / NULLIF(1.0*orders_items, 0), 0), 7) ) AS FLOAT) AS itemsRatio,
CAST( (ROUND(COALESCE(returns_money / NULLIF(1.0*orders_money, 0), 0), 7) ) AS FLOAT) AS monetaryRatio,
CAST( (COALESCE(returns_count, 0)) AS FLOAT) AS frequency
FROM
(
SELECT
ss_customer_sk,
-- return order ratio
COUNT(distinct(ss_ticket_number)) AS orders_count,
-- return ss_item_sk ratio
COUNT(ss_item_sk) AS orders_items,
-- return monetary amount ratio
SUM( ss_net_paid ) AS orders_money
FROM store_sales s
GROUP BY ss_customer_sk
) orders
LEFT OUTER JOIN
(
SELECT
sr_customer_sk,
-- return order ratio
count(distinct(sr_ticket_number)) as returns_count,
-- return ss_item_sk ratio
COUNT(sr_item_sk) as returns_items,
-- return monetary amount ratio
SUM( sr_return_amt ) AS returns_money
FROM store_returns
GROUP BY sr_customer_sk
) returned ON ss_customer_sk=sr_customer_sk
'
EXEC sp_execute_external_script
@language = N'Python'
, @script = N'
import pandas as pd
from sklearn.cluster import KMeans
#get data from input query
customer_data = my_input_data
#We concluded in step 2 in the tutorial that 4 would be a good number of clusters
n_clusters = 4
#Perform clustering
est = KMeans(n_clusters=n_clusters, random_state=111).fit(customer_data[["orderRatio","itemsRatio","monetaryRatio","frequency"]])
clusters = est.labels_
customer_data["cluster"] = clusters
OutputDataSet = customer_data
'
, @input_data_1 = @input_query
, @input_data_1_name = N'my_input_data'
with result sets (("Customer" int, "orderRatio" float,"itemsRatio" float,"monetaryRatio" float,"frequency" float,"cluster" float));
END;
GO
Fürtözés végrehajtása
Most, hogy létrehozta a tárolt eljárást, hajtsa végre a következő szkriptet, hogy klaszterezést hajtson végre az eljárás segítségével.
--Create a table to store the predictions in
DROP TABLE IF EXISTS [dbo].[py_customer_clusters];
GO
CREATE TABLE [dbo].[py_customer_clusters] (
[Customer] [bigint] NULL
, [OrderRatio] [float] NULL
, [itemsRatio] [float] NULL
, [monetaryRatio] [float] NULL
, [frequency] [float] NULL
, [cluster] [int] NULL
,
) ON [PRIMARY]
GO
--Execute the clustering and insert results into table
INSERT INTO py_customer_clusters
EXEC [dbo].[py_generate_customer_return_clusters];
-- Select contents of the table to verify it works
SELECT * FROM py_customer_clusters;
A fürtözési adatok használata
Mivel a klaszterezési eljárást az adatbázisban tárolta, hatékonyan végezhet klaszterezést az ugyanazon az adatbázisban tárolt ügyféladatokon. Az eljárást bármikor végrehajthatja, amikor csak frissítik az ügyféladatokat, és alkalmazhatja a frissített klaszterezési információkat.
Tegyük fel, hogy promóciós e-mailt szeretne küldeni a 0. fürtben lévő ügyfeleknek, az inaktív csoportnak (az oktatóanyag harmadik részében láthatja, hogyan írta le a négy fürtöt). Az alábbi kód a 0. klaszter ügyfelei e-mail-címeit választja ki.
USE [tpcxbb_1gb]
--Get email addresses of customers in cluster 0 for a promotion campaign
SELECT customer.[c_email_address], customer.c_customer_sk
FROM dbo.customer
JOIN
[dbo].[py_customer_clusters] as c
ON c.Customer = customer.c_customer_sk
WHERE c.cluster = 0
A c.cluster értékét módosítva visszakaphatja más fürtökben található ügyfelek e-mail-címeit.
Erőforrások tisztítása
Ha befejezte ezt az oktatóanyagot, törölheti a tpcxbb_1gb adatbázist.
Következő lépések
Az oktatóanyag-sorozat negyedik részében az alábbi lépéseket hajtotta végre:
- A modellt létrehozó tárolt eljárás létrehozása
- A fürtözés végrehajtása a kiszolgálón
- A fürtözési adatok használata
A Python sql-alapú gépi tanulásban való használatáról a következő témakörben olvashat bővebben: