Краткое руководство. Функции Python с использованием машинного обучения SQLQuickstart: Python functions with SQL machine learning

Применимо к:Applies to: даSQL Server 2017 (14.x);SQL Server 2017 (14.x)yesSQL Server 2017 (14.x);SQL Server 2017 (14.x) и более поздние версии ДаУправляемый экземпляр SQL AzureAzure SQL Managed InstanceYesУправляемый экземпляр SQL AzureAzure SQL Managed InstanceПрименимо к:Applies to: даSQL Server 2017 (14.x);SQL Server 2017 (14.x)yesSQL Server 2017 (14.x);SQL Server 2017 (14.x) and later ДаУправляемый экземпляр SQL AzureAzure SQL Managed InstanceYesУправляемый экземпляр SQL AzureAzure SQL Managed Instance

В этом кратком руководстве вы узнаете, как использовать математические и служебные функции Python в Службах машинного обучения SQL Server, Службах машинного обучения управляемого экземпляра Azure SQL или в Кластерах больших данных SQL Server.In this quickstart, you'll learn how to use Python mathematical and utility functions with SQL Server Machine Learning Services, Azure SQL Managed Instance Machine Learning Services, or SQL Server Big Data Clusters. Зачастую статистические функции, которые сложно реализовать в T-SQL, выполняются в Python всего парой строк кода.Statistical functions are often complicated to implement in T-SQL, but can be done in Python with only a few lines of code.

Предварительные требованияPrerequisites

Для работы с этим кратким руководством необходимо следующее.You need the following prerequisites to run this quickstart.

Создание хранимой процедуры для формирования случайных чиселCreate a stored procedure to generate random numbers

Для простоты давайте воспользуемся пакетом Python numpy, который устанавливается и загружается по умолчанию.For simplicity, let's use the Python numpy package, that's installed and loaded by default. Он содержит сотню функций для общих статистических задач, в том числе функцию random.normal, которая формирует указанное количество случайных чисел с нормальным распределением при заданном среднем значении и стандартном отклонении.The package contains hundreds of functions for common statistical tasks, among them the random.normal function, which generates a specified number of random numbers using the normal distribution, given a standard deviation and mean.

Например, следующий код Python возвращает 100 чисел со средним значением 50 и стандартным отклонением 3.For example, the following Python code returns 100 numbers on a mean of 50, given a standard deviation of 3.

numpy.random.normal(size=100, loc=50, scale=3)

Чтобы вызвать эту строку Python из T-SQL, добавьте функцию Python в параметр скрипта Python sp_execute_external_script.To call this line of Python from T-SQL, add the Python function in the Python script parameter of sp_execute_external_script. На выходе должен получиться кадр данных, поэтому используйте для преобразования pandas.The output expects a data frame, so use pandas to convert it.

EXECUTE sp_execute_external_script @language = N'Python'
    , @script = N'
import numpy
import pandas
OutputDataSet = pandas.DataFrame(numpy.random.normal(size=100, loc=50, scale=3));
'
    , @input_data_1 = N'   ;'
WITH RESULT SETS(([Density] FLOAT NOT NULL));

Как упростить формирование другого набора случайных чисел?What if you'd like to make it easier to generate a different set of random numbers? Вы определяете хранимую процедуру, которая получает предоставленные пользователем аргументы и передает их в качестве переменных в скрипт Python.You define a stored procedure that gets the arguments from the user, then pass those arguments into the Python script as variables.

CREATE PROCEDURE MyPyNorm (
      @param1 INT
    , @param2 INT
    , @param3 INT
    )
AS
EXECUTE sp_execute_external_script @language = N'Python'
    , @script = N'
import numpy
import pandas
OutputDataSet = pandas.DataFrame(numpy.random.normal(size=mynumbers, loc=mymean, scale=mysd));
'
    , @input_data_1 = N'   ;'
    , @params = N' @mynumbers int, @mymean int, @mysd int'
    , @mynumbers = @param1
    , @mymean = @param2
    , @mysd = @param3
WITH RESULT SETS(([Density] FLOAT NOT NULL));
  • В первой строке определяется каждый из входных параметров SQL, необходимых при выполнении хранимой процедуры.The first line defines each of the SQL input parameters that are required when the stored procedure is executed.

  • Строка, начинающаяся с @params, определяет все переменные, используемые в коде Python, и соответствующие типы данных SQL.The line beginning with @params defines all variables used by the Python code, and the corresponding SQL data types.

  • Следующие строки сопоставляют имена параметров SQL с соответствующими именами переменных Python.The lines that immediately follow map the SQL parameter names to the corresponding Python variable names.

Теперь, когда функция Python упакована в хранимой процедуре, вы можете легко вызвать ее и передать различные значения, как показано ниже:Now that you've wrapped the Python function in a stored procedure, you can easily call the function and pass in different values, like this:

EXECUTE MyPyNorm @param1 = 100,@param2 = 50, @param3 = 3

Использование служебных функций Python для устранения неполадокUse Python utility functions for troubleshooting

В пакетах Python предусмотрено множество служебных функций для изучения текущей среды Python.Python packages provide a variety of utility functions for investigating the current Python environment. Они могут оказаться полезными, если вы нашли несоответствия в выполнении кода Python в SQL Server и внешних средах.These functions can be useful if you're finding discrepancies in the way your Python code performs in SQL Server and in outside environments.

Например, с помощью функций управления системным временем в пакете time вы можете оценить количество времени, затрачиваемого процессами Python, и проанализировать проблемы, связанные с производительностью.For example, you might use system timing functions in the time package to measure the amount of time used by Python processes and analyze performance issues.

EXECUTE sp_execute_external_script
      @language = N'Python'
    , @script = N'
import time
start_time = time.time()

# Run Python processes

elapsed_time = time.time() - start_time
'
    , @input_data_1 = N' ;';

Дальнейшие действияNext steps

Сведения о создании модели машинного обучения с использованием Python и машинного обучения SQL приведены в следующем кратком руководстве:To create a machine learning model using Python with SQL machine learning, follow this quickstart: