Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Gäller för: SQL Server 2017 (14.x) och senare versioner
Azure SQL Managed Instance
I del två av den här självstudieserien i fyra delar återställer och förbereder du data från en databas med Python. Senare i den här serien använder du dessa data för att träna och distribuera en klustringsmodell i Python med SQL Server Machine Learning Services eller i stordatakluster.
I del två av den här självstudieserien i fyra delar återställer och förbereder du data från en databas med Python. Senare i den här serien använder du dessa data för att träna och distribuera en klustermodell i Python med SQL Server Machine Learning Services.
I del två av den här självstudieserien i fyra delar återställer och förbereder du data från en databas med Python. Senare i den här serien använder du dessa data för att träna och distribuera en klustermodell i Python med Azure SQL Managed Instance Machine Learning Services.
I den här artikeln får du lära dig att:
- Separera kunder längs olika dimensioner med hjälp av Python
- Läs in data från databasen i en Python-dataram
I del ett installerade du förhandskraven och återställde exempeldatabasen.
I del tre får du lära dig hur du skapar och tränar en K-Means-klustermodell i Python.
I del fyra får du lära dig hur du skapar en lagrad procedur i en databas som kan utföra klustring i Python baserat på nya data.
Prerequisites
- Del två i den här självstudien förutsätter att du har uppfyllt förutsättningarna för del ett.
Separata kunder
För att förbereda för kundklustring kommer du först att separera kunderna längs följande dimensioner:
- orderRatio = returorderförhållande (totalt antal ordrar delvis eller helt returnerade jämfört med det totala antalet beställningar)
- itemsRatio = return item ratio (totalt antal artiklar som returneras jämfört med antalet köpta artiklar)
- monetaryRatio = förhållandet mellan returbelopp (totalt penningbelopp för poster som returneras jämfört med det köpta beloppet)
- frequency = återfrekvens
Öppna en ny notebook-fil i Azure Data Studio och ange följande skript.
Ersätt anslutningsinformationen efter behov i anslutningssträngen.
# Load packages.
import pyodbc
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from scipy.spatial import distance as sci_distance
from sklearn import cluster as sk_cluster
################################################################################################
## Connect to DB and select data
################################################################################################
# Connection string to connect to SQL Server named instance.
conn_str = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server}; SERVER=<server>; DATABASE=tpcxbb_1gb; UID=<username>; PWD=<password>')
input_query = '''SELECT
ss_customer_sk AS customer,
ROUND(COALESCE(returns_count / NULLIF(1.0*orders_count, 0), 0), 7) AS orderRatio,
ROUND(COALESCE(returns_items / NULLIF(1.0*orders_items, 0), 0), 7) AS itemsRatio,
ROUND(COALESCE(returns_money / NULLIF(1.0*orders_money, 0), 0), 7) AS monetaryRatio,
COALESCE(returns_count, 0) 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'''
# Define the columns we wish to import.
column_info = {
"customer": {"type": "integer"},
"orderRatio": {"type": "integer"},
"itemsRatio": {"type": "integer"},
"frequency": {"type": "integer"}
}
Ladda in data i en dataframe
Resultat från frågan returneras till Python med hjälp av funktionen Pandas read_sql . Som en del av processen använder du kolumninformationen som du definierade i föregående skript.
customer_data = pd.read_sql(input_query, conn_str)
Visa nu början av dataramen för att kontrollera att den ser korrekt ut.
print("Data frame:", customer_data.head(n=5))
Här är resultatet.
Rows Read: 37336, Total Rows Processed: 37336, Total Chunk Time: 0.172 seconds
Data frame: customer orderRatio itemsRatio monetaryRatio frequency
0 29727.0 0.000000 0.000000 0.000000 0
1 97643.0 0.068182 0.078176 0.037034 3
2 57247.0 0.000000 0.000000 0.000000 0
3 32549.0 0.086957 0.068657 0.031281 4
4 2040.0 0.000000 0.000000 0.000000 0
Rensa resurser
Om du inte tänker fortsätta med den här självstudien, ta bort databasen tpcxbb_1gb.
Nästa steg
I del två av den här självstudieserien har du slutfört följande steg:
- Separera kunder längs olika dimensioner med hjälp av Python
- Läs in data från databasen i en Python-dataram
Om du vill skapa en maskininlärningsmodell som använder dessa kunddata följer du del tre i den här självstudieserien: