Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir: SQL Server 2017 (14.x) ve sonraki sürümleri
Azure SQL Yönetimli Örnek
Bu dört bölümden oluşan öğretici serisinin dördüncü bölümünde, Python'da geliştirilen bir kümeleme modelini SQL Server Machine Learning Services veya Büyük Veri Kümeleri kullanarak bir veritabanına dağıtacaksınız.
Bu dört bölümden oluşan öğretici serisinin dördüncü bölümünde, Python'da geliştirilen bir kümeleme modelini SQL Server Machine Learning Services kullanarak bir veritabanına dağıtacaksınız.
Bu dört bölümden oluşan öğretici serisinin dördüncü bölümünde, Python'da geliştirilen bir kümeleme modelini Azure SQL Yönetilen Örneği Machine Learning Services kullanarak bir veritabanına dağıtacaksınız.
Yeni müşteriler kaydolarak düzenli aralıklarla kümeleme gerçekleştirmek için herhangi bir Uygulamadan Python betiğini çağırabilmeniz gerekir. Bunu yapmak için Python betiğini bir SQL saklı yordamının içine yerleştirerek python betiğini bir veritabanına dağıtabilirsiniz. Modeliniz veritabanında yürütülürken, veritabanında depolanan verilere karşı kolayca eğitilebilir.
Bu bölümde, az önce yazdığınız Python kodunu sunucuya taşıyacak ve kümeleme dağıtacaksınız.
Bu makalede şunları nasıl yapacağınızı öğreneceksiniz:
- Modeli üreten saklı yordam oluşturun
- Sunucuda kümeleme gerçekleştirme
- Kümeleme bilgilerini kullanma
Birinci bölümde önkoşulları yüklemiş ve örnek veritabanını geri yüklemişsinizdir.
İkinci bölümde, kümeleme gerçekleştirmek için veritabanındaki verileri nasıl hazırlayabileceğinizi öğrendinsiniz.
Üçüncü bölümde Python'da K-Means kümeleme modeli oluşturmayı ve eğitmeyi öğrendiniz.
Önkoşullar
- Bu öğretici serisinin dördüncü bölümünde birinci bölümün önkoşullarını yerine getirdiğiniz ve ikinci ve üçüncübölümdeki adımları tamamladığınız varsayılır.
Modeli üreten saklı yordam oluşturun
Saklı yordamı oluşturmak için aşağıdaki T-SQL betiğini çalıştırın. Prosedür, bu öğretici serisinin birinci ve ikinci bölümlerinde geliştirdiğiniz adımları yeniden oluşturur.
- müşterileri satın alma ve iade geçmişine göre sınıflandırma
- K-Means algoritması kullanarak dört müşteri kümesi oluşturma
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
Kümeleme gerçekleştirme
Saklı yordamı oluşturduğunuza göre, yordamı kullanarak kümeleme gerçekleştirmek için aşağıdaki betiği yürütebilirsiniz.
--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;
Kümeleme bilgilerini kullanma
Kümeleme yordamını veritabanında depoladığınız için, aynı veritabanında depolanan müşteri verilerine karşı kümeleme işlemini verimli bir şekilde gerçekleştirebilir. Müşteri verileriniz her güncelleştirildiğinde yordamı yürütebilir ve güncelleştirilmiş kümeleme bilgilerini kullanabilirsiniz.
Etkin olmayan grup olan küme 0'daki müşterilere tanıtım amaçlı bir e-posta göndermek istediğinizi varsayalım (bu öğreticinin üçüncü bölümünde dört kümenin nasıl açıklandığını görebilirsiniz). Aşağıdaki kod, küme 0'daki müşterilerin e-posta adreslerini seçer.
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
Diğer kümelerdeki müşterilerin e-posta adreslerini döndürmek için c.cluster değerini değiştirebilirsiniz.
Kaynakları temizle
Bu öğreticiyi tamamladığınızda tpcxbb_1gb veritabanını silebilirsiniz.
Sonraki Adımlar
Bu öğretici serisinin dördüncü bölümünde şu adımları tamamladınız:
- Modeli üreten saklı yordam oluşturun
- Sunucuda kümeleme gerçekleştirme
- Kümeleme bilgilerini kullanma
SQL makine öğrenmesinde Python kullanma hakkında daha fazla bilgi edinmek için bkz: