Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik: Sql Server 2017 (14.x) és újabb verziók
Felügyelt Azure SQL-példány
A négyrészes oktatóanyag-sorozat második részében visszaállítja és előkészíti az adatokat egy adatbázisból a Python használatával. A sorozat későbbi részében ezekkel az adatokkal betaníthat és felszerelhet egy klaszterezési modellt a Python nyelvben az SQL Server Machine Learning Services vagy a Big Data-fürtök révén.
A négyrészes oktatóanyag-sorozat második részében visszaállítja és előkészíti az adatokat egy adatbázisból a Python használatával. A sorozat későbbi részében ezekkel az adatokkal betaníthat és üzembe helyezhet egy fürtözési modellt a Pythonban az SQL Server Machine Learning Services használatával.
A négyrészes oktatóanyag-sorozat második részében visszaállítja és előkészíti az adatokat egy adatbázisból a Python használatával. A sorozat későbbi részében ezekkel az adatokkal betaníthat és üzembe helyezhet egy fürtözési modellt a Pythonban az Azure SQL Managed Instance Machine Learning Services használatával.
Ebben a cikkben megtudhatja, hogyan:
- Ügyfelek elkülönítése különböző dimenziók mentén a Python használatával
- Az adatbázis adatainak betöltése Python-adatkeretbe
Az első részben telepítette az előfeltételeket, és visszaállította a mintaadatbázist.
A harmadik részben megtudhatja, hogyan hozhat létre és taníthat be K-Means fürtözési modellt a Pythonban.
A negyedik részben megtanulhatja, hogyan hozhat létre tárolt eljárást egy olyan adatbázisban, amely új adatok alapján képes fürtözést végezni a Pythonban.
Prerequisites
- Az oktatóanyag második része feltételezi, hogy teljesítette az első rész előfeltételeit.
Ügyfelek elkülönítése
Az ügyfelek klaszterezésére való felkészüléshez először a következő dimenziók mentén kell elkülönítenie az ügyfeleket.
- orderRatio = visszatérési rendelés aránya (a részben vagy teljesen visszaadott rendelések teljes száma a rendelések teljes számával szemben)
- itemsRatio = return item ratio (a visszaadott elemek teljes száma és a megvásárolt elemek száma)
- monetaryRatio = visszatérési összeg aránya (a visszaadott tételek teljes pénzügyi összege a megvásárolt összeggel szemben)
- frequency = visszatérési gyakoriság
Nyisson meg egy új jegyzetfüzetet az Azure Data Studióban, és írja be a következő szkriptet.
A kapcsolati sztringben szükség szerint cserélje le a kapcsolat részleteit.
# 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"}
}
Adatok betöltése adatkeretbe
A lekérdezés eredményei a Pandas read_sql függvénnyel lesznek visszaadva a Pythonnak. A folyamat részeként az előző szkriptben definiált oszlopadatokat fogja használni.
customer_data = pd.read_sql(input_query, conn_str)
Most jelenítse meg az adatkeret elejét annak ellenőrzéséhez, hogy helyesen néz-e ki.
print("Data frame:", customer_data.head(n=5))
Itt van az eredmények összessége.
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
Erőforrások tisztítása
Ha nem folytatja ezt az oktatóanyagot, törölje a tpcxbb_1gb adatbázist.
Következő lépések
Az oktatóanyag-sorozat második részében az alábbi lépéseket hajtotta végre:
- Ügyfelek elkülönítése különböző dimenziók mentén a Python használatával
- Az adatbázis adatainak betöltése Python-adatkeretbe
Az ügyféladatokat használó gépi tanulási modell létrehozásához kövesse az oktatóanyag-sorozat harmadik részét: