Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Применимо к: 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.
Чтобы создать модель машинного обучения, которая использует эти данные о клиентах, перейдите к третьей части этого учебника: