Mulai cepat: Fungsi Python dengan pembelajaran mesin SQL

Berlaku untuk: SQL Server 2017 (14.x) dan yang lebih baru Azure SQL Managed Instance

Dalam mulai cepat ini, Anda akan mempelajari cara menggunakan fungsi matematika dan utilitas Python dengan SQL Server Machine Learning Services, Azure SQL Managed Instance Machine Learning Services, atau SQL Server Kluster Big Data. Fungsi statistik sering kali rumit untuk diterapkan dalam T-SQL, tetapi dapat dilakukan di Python hanya dengan beberapa baris kode.

Prasyarat

Anda memerlukan prasyarat berikut untuk menjalankan mulai cepat ini.

Membuat prosedur tersimpan untuk menghasilkan angka acak

Untuk kesederhanaan, mari kita gunakan paket Python numpy , yang diinstal dan dimuat secara default. Paket ini berisi ratusan fungsi untuk tugas statistik umum, di antaranya random.normal fungsi , yang menghasilkan jumlah angka acak tertentu menggunakan distribusi normal, mengingat simpanpan standar dan rata-rata.

Misalnya, kode Python berikut mengembalikan 100 angka pada rata-rata 50, mengingat simpanpan standar 3.

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

Untuk memanggil baris Python ini dari T-SQL, tambahkan fungsi Python di parameter skrip Python dari sp_execute_external_script. Output mengharapkan bingkai data, jadi gunakan pandas untuk mengonversinya.

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));

Bagaimana jika Anda ingin mempermudah untuk menghasilkan sekumpulan angka acak yang berbeda? Anda menentukan prosedur tersimpan yang mendapatkan argumen dari pengguna, lalu meneruskan argumen tersebut ke dalam skrip Python sebagai variabel.

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));
  • Baris pertama mendefinisikan masing-masing parameter input SQL yang diperlukan saat prosedur tersimpan dijalankan.

  • Baris yang dimulai dengan @params mendefinisikan semua variabel yang digunakan oleh kode Python, dan jenis data SQL yang sesuai.

  • Baris yang segera mengikuti petakan nama parameter SQL ke nama variabel Python yang sesuai.

Sekarang setelah Anda membungkus fungsi Python dalam prosedur tersimpan, Anda dapat dengan mudah memanggil fungsi dan meneruskan nilai yang berbeda, seperti ini:

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

Menggunakan fungsi utilitas Python untuk pemecahan masalah

Paket Python menyediakan berbagai fungsi utilitas untuk menyelidiki lingkungan Python saat ini. Fungsi-fungsi ini dapat berguna jika Anda menemukan perbedaan dalam cara kode Python Anda bekerja di SQL Server dan di lingkungan luar.

Misalnya, Anda dapat menggunakan fungsi pengaturan waktu sistem dalam time paket untuk mengukur jumlah waktu yang digunakan oleh proses Python dan menganalisis masalah performa.

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' ;';

Langkah berikutnya

Untuk membuat model pembelajaran mesin menggunakan Python dengan pembelajaran mesin SQL, ikuti mulai cepat ini: