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 2017 (14.x) en latere versies
van Azure SQL Managed Instance
In deel twee van deze vierdelige reeks zelfstudies herstelt en bereidt u de gegevens uit een database voor met behulp van Python. Verderop in deze reeks gebruikt u deze gegevens om een clusteringmodel te trainen en te implementeren in Python met SQL Server Machine Learning Services of op Big Data-clusters.
In deel twee van deze vierdelige reeks zelfstudies herstelt en bereidt u de gegevens uit een database voor met behulp van Python. Verderop in deze reeks gebruikt u deze gegevens om een clusteringmodel te trainen en te implementeren in Python met SQL Server Machine Learning Services.
In deel twee van deze vierdelige reeks zelfstudies herstelt en bereidt u de gegevens uit een database voor met behulp van Python. Verderop in deze reeks gebruikt u deze gegevens om een clusteringmodel te trainen en te implementeren in Python met Azure SQL Managed Instance Machine Learning Services.
In dit artikel leert u het volgende:
- Klanten segmenteren langs verschillende dimensies met behulp van Python
- De gegevens uit de database laden in een Python-gegevensframe
In deel 1 hebt u de vereisten geïnstalleerd en de voorbeelddatabase hersteld.
In deel drie leert u hoe u een K-Means-clusteringmodel maakt en traint in Python.
In deel vier leert u hoe u een opgeslagen procedure maakt in een database die clustering in Python kan uitvoeren op basis van nieuwe gegevens.
Prerequisites
- In deel twee van deze zelfstudie wordt ervan uitgegaan dat u aan de vereisten van deel 1 hebt voldaan.
Afzonderlijke klanten
Als u zich wilt voorbereiden op clusteringklanten, scheidt u eerst klanten langs de volgende dimensies:
- orderRatio = retourorderverhouding (totaal aantal orders gedeeltelijk of volledig geretourneerd versus het totale aantal orders)
- itemsRatio = verhouding retouritem (totaal aantal geretourneerde items versus het aantal gekochte artikelen)
- monetaryRatio = retourbedragverhouding (totale monetaire hoeveelheid geretourneerde items versus het aangeschafte bedrag)
- frequency = retourfrequentie
Open een nieuw notebook in Azure Data Studio en voer het volgende script in.
Vervang zo nodig de verbindingsgegevens in de verbindingsreeks.
# 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"}
}
De gegevens in een gegevensframe laden
Resultaten van de query worden geretourneerd naar Python met behulp van de functie Pandas read_sql . Als onderdeel van het proces gebruikt u de kolomgegevens die u in het vorige script hebt gedefinieerd.
customer_data = pd.read_sql(input_query, conn_str)
Geef nu het begin van het gegevensframe weer om te controleren of het er correct uitziet.
print("Data frame:", customer_data.head(n=5))
Hier is het resultatenoverzicht.
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
De hulpbronnen opschonen
Als u niet verdergaat met deze zelfstudie, verwijdert u de tpcxbb_1gb-database.
Volgende stappen
In deel twee van deze reeks zelfstudies hebt u deze stappen voltooid:
- Klanten segmenteren langs verschillende dimensies met behulp van Python
- De gegevens uit de database laden in een Python-gegevensframe
Als u een machine learning-model wilt maken dat gebruikmaakt van deze klantgegevens, volgt u deel drie van deze reeks zelfstudies: