Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Применимо к: SQL Server 2017 (14.x) и более поздним версиям
Azure SQL Управляемый экземпляр
Во второй части этого цикла учебников, состоящего из четырех частей, вы восстановите и подготовите данные из базы данных с использованием Python. Далее в этом цикле вы используете подготовленные данные для обучения и развертывания модели кластеризации в Python с помощью Служб машинного обучения SQL Server или в Кластерах больших данных.
Во второй части этого цикла учебников, состоящего из четырех частей, вы восстановите и подготовите данные из базы данных с использованием Python. Далее в этой серии руководств вы будете использовать эти данные для обучения и развертывания модели кластеризации с использованием Python в службах машинного обучения SQL Server.
Во второй части этого цикла учебников, состоящего из четырех частей, вы восстановите и подготовите данные из базы данных с использованием Python. Далее в этой серии руководств вы будете использовать эти данные для обучения и развертывания модели кластеризации с использованием Python в службах машинного обучения Управляемого экземпляра SQL Azure.
В этой статье вы узнаете, как выполнять следующие задачи.
- Разделение клиентов по различным измерениям с помощью Python
- Загрузка данных из базы данных в кадр данных Python.
В одной части вы установили необходимые компоненты и восстановили образец базы данных.
В третьей части вы узнаете, как создать и обучить модель кластеризации K-Средних в Python.
В четвертой части вы узнаете, как создать хранимую процедуру в базе данных, которая может выполнять кластеризацию в Python на основе новых данных.
Prerequisites
- Часть 2 этого руководства предполагает, что вы выполнили предварительные требования части одной.
Отдельные клиенты
Чтобы подготовиться к кластеризации клиентов, сначала необходимо разделить клиентов по следующим измерениям:
- orderRatio = коэффициент возврата заказа (общее количество заказов частично или полностью возвращено по сравнению с общим числом заказов)
- itemsRatio = соотношение возвращаемых элементов (общее количество возвращаемых элементов и количество приобретенных элементов)
- monetaryRatio = коэффициент возвращаемой суммы (общий денежный объем возвращаемых элементов по сравнению с суммами, приобретенными)
- частота = частота возврата
Откройте новую записную книжку в Azure Data Studio и выполните следующий сценарий.
В строке подключения при необходимости замените параметры подключения.
# 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"}
}
Загрузка данных в кадр данных
Результаты запроса возвращаются в Python с помощью функции Pandas read_sql . Во время выполнения этого задания будут использоваться сведения о столбцах, определенные в предыдущем сценарии.
customer_data = pd.read_sql(input_query, conn_str)
Теперь выведем начало кадра данных, чтобы убедиться, что он выглядит правильно.
print("Data frame:", customer_data.head(n=5))
Вот результат.
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
Очистка ресурсов
Если вы не собираетесь продолжать работу с этим учебником, удалите базу данных tpcxbb_1gb.
Дальнейшие шаги
Во второй части этого учебника вы выполнили следующие действия.
- Разделение клиентов по различным измерениям с помощью Python
- Загрузка данных из базы данных в кадр данных Python.
Чтобы создать модель машинного обучения, которая использует эти данные о клиентах, перейдите к третьей части этого учебника: