Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für: SQL Server 2017 (14.x) und höhere Versionen
von Azure SQL Managed Instance
Im zweiten Teil dieser vierteiligen Tutorialreihe stellen Sie Daten aus einer Datenbank mithilfe von Python wieder her und bereiten diese vor. Diese Daten verwenden Sie in einem späteren Teil dieser Reihe zum Trainieren und Bereitstellen eines Clustermodells in Python mit SQL Server Machine Learning Services oder in Big Data-Clustern.
Im zweiten Teil dieser vierteiligen Tutorialreihe stellen Sie Daten aus einer Datenbank mithilfe von Python wieder her und bereiten diese vor. Diese Daten verwenden Sie in einem späteren Teil dieser Reihe zum Trainieren und Bereitstellen eines Clustermodells in Python mit SQL Server Machine Learning Services.
Im zweiten Teil dieser vierteiligen Tutorialreihe stellen Sie Daten aus einer Datenbank mithilfe von Python wieder her und bereiten diese vor. Diese Daten verwenden Sie in einem späteren Teil dieser Reihe zum Trainieren und Bereitstellen eines Clustermodells in Python mit Machine Learning Services in Azure SQL Managed Instance.
In diesem Artikel lernen Sie Folgendes:
- Aufteilen von Kunden über verschiedene Dimensionen mit Python
- Laden der Daten aus der Datenbank in einen Python-Datenrahmen
In Teil 1 haben Sie die erforderlichen Komponenten installiert und die Beispieldatenbank wiederhergestellt.
In Teil 3 erfahren Sie, wie Sie ein K-Means-Clustering-Modell in Python erstellen und trainieren.
In Teil 4 erfahren Sie, wie Sie eine gespeicherte Prozedur in einer Datenbank erstellen, die clustering in Python basierend auf neuen Daten ausführen kann.
Prerequisites
- Teil 2 dieses Lernprogramms setzt voraus, dass Sie die Voraussetzungen von Teil 1 erfüllt haben.
Trennen von Kunden
Sie werden zunächst Kunden nach den folgenden Dimensionen aufteilen, um sich auf das Clustering von Kunden vorzubereiten:
- orderRatio = Rückgabeauftragsquote (Gesamtanzahl der Bestellungen teilweise oder vollständig zurückgegeben im Vergleich zur Gesamtzahl der Bestellungen)
- itemsRatio = Rückgabeartikelverhältnis (Gesamtanzahl der zurückgegebenen Artikel im Vergleich zur Anzahl der gekauften Artikel)
- monetaryRatio = Rückgabebetragsquote (Gesamtwährungsbetrag der zurückgegebenen Artikel im Vergleich zum gekauften Betrag)
- frequency = Rückgabehäufigkeit
Öffnen Sie ein neues Notebook in Azure Data Studio, und geben Sie das folgende Skript ein.
Ersetzen Sie bei Bedarf die Verbindungsdetails in der Verbindungszeichenfolge.
# 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"}
}
Laden der Daten in einem neuen Datenrahmen
Ergebnisse aus der Abfrage werden mithilfe der Funktion Pandas read_sql an Python zurückgegeben. Als Teil des Prozesses verwenden Sie die Spalteninformationen, die Sie im vorherigen Skript definiert haben.
customer_data = pd.read_sql(input_query, conn_str)
Zeigen Sie nun den Anfang des Datenrahmens an, um sicherzustellen, dass er korrekt ist.
print("Data frame:", customer_data.head(n=5))
Hier ist das Ergebnis.
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
Bereinigen von Ressourcen
Wenn Sie nicht mit diesem Tutorial fortfahren möchten, löschen Sie die Datenbank „tpcxbb_1gb“.
Nächste Schritte
In Teil 2 dieser Tutorialreihe haben Sie die folgenden Schritte ausgeführt:
- Aufteilen von Kunden über verschiedene Dimensionen mit Python
- Laden der Daten aus der Datenbank in einen Python-Datenrahmen
Befolgen Sie Teil 3 dieser Tutorialreihe, um ein Machine Learning-Modell zu erstellen, das diese Kundendaten verwendet: