Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy: SQL Server 2017 (14.x) i nowsze wersje
usługi Azure SQL Managed Instance
W drugiej części tej czteroczęściowej serii samouczków przywrócisz i przygotujesz dane z bazy danych przy użyciu języka Python. W dalszej części tej serii użyjesz tych danych do trenowania i wdrażania modelu klastrowania w języku Python przy użyciu usług SQL Server Machine Learning Services lub klastrów danych big data.
W drugiej części tej czteroczęściowej serii samouczków przywrócisz i przygotujesz dane z bazy danych przy użyciu języka Python. W dalszej części tej serii użyjesz tych danych do trenowania i wdrażania modelu klastrowania w języku Python przy użyciu usług SQL Server Machine Learning Services.
W drugiej części tej czteroczęściowej serii samouczków przywrócisz i przygotujesz dane z bazy danych przy użyciu języka Python. W dalszej części tej serii użyjesz tych danych do trenowania i wdrażania modelu klastrowania w języku Python przy użyciu usług Azure SQL Managed Instance Machine Learning Services.
W tym artykule dowiesz się, jak:
- Oddzielaj klientów wzdłuż różnych wymiarów przy użyciu języka Python
- Ładowanie danych z bazy danych do ramki danych języka Python
W części 1 zainstalowano wymagania wstępne i przywrócono przykładową bazę danych.
W trzeciej części dowiesz się, jak utworzyć i wytrenować model klastrowania K-Średnich w języku Python.
W czwartej części dowiesz się, jak utworzyć procedurę składowaną w bazie danych, która może wykonywać klastrowanie w języku Python na podstawie nowych danych.
Prerequisites
- W drugiej części tego samouczka założono, że spełniono wymagania wstępne części 1.
Oddzielni klienci
Aby przygotować się do klastrowania klientów, najpierw rozdzielisz klientów następującymi wymiarami:
- orderRatio = współczynnik zamówienia zwrotnego (łączna liczba zamówień częściowo lub w pełni zwrócona w porównaniu z łączną liczbą zamówień)
- itemsRatio = współczynnik elementów zwracanych (łączna liczba zwróconych elementów w porównaniu z liczbą zakupionych elementów)
- monetaryRatio = stosunek kwoty zwrotu (łączna kwota pieniężna elementów zwróconych w porównaniu do zakupionej kwoty)
- frequency = częstotliwość zwrotu
Otwórz nowy notes w narzędziu Azure Data Studio i wprowadź następujący skrypt.
W parametrach połączenia zastąp szczegóły połączenia zgodnie z potrzebami.
# 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"}
}
Ładowanie danych do ramki danych
Wyniki zapytania są zwracane do języka Python przy użyciu funkcji pandas read_sql . W ramach procesu użyjesz definicji kolumny zdefiniowanej w poprzednim skrypcie.
customer_data = pd.read_sql(input_query, conn_str)
Teraz wyświetl początek ramki danych, aby sprawdzić, czy wygląda poprawnie.
print("Data frame:", customer_data.head(n=5))
Oto zestaw wyników.
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
Uprzątnij zasoby
Jeśli nie zamierzasz kontynuować pracy z tym samouczkiem, usuń bazę danych tpcxbb_1gb.
Dalsze kroki
W drugiej części tej serii samouczków wykonano następujące kroki:
- Oddzielaj klientów wzdłuż różnych wymiarów przy użyciu języka Python
- Ładowanie danych z bazy danych do ramki danych języka Python
Aby utworzyć model uczenia maszynowego, który korzysta z tych danych klienta, wykonaj trzy części tej serii samouczków: