Data demo Iris untuk tutorial Python dan R dengan pembelajaran mesin SQL

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

Dalam latihan ini, buat database untuk menyimpan data dari himpunan data dan model bunga Iris berdasarkan data yang sama. Data Iris disertakan dalam distribusi R dan Python, dan digunakan dalam tutorial pembelajaran mesin untuk pembelajaran mesin SQL.

Untuk menyelesaikan latihan ini, Anda harus memiliki SQL Server Management Studio atau alat lain yang dapat menjalankan kueri T-SQL.

Tutorial dan mulai cepat menggunakan himpunan data ini meliputi yang berikut ini:

Buat database

  1. Mulai SQL Server Management Studio, dan buka jendela Kueri baru.

  2. Buat database baru untuk proyek ini, dan ubah konteks jendela Kueri Anda untuk menggunakan database baru.

    CREATE DATABASE irissql
    GO
    USE irissql
    GO
    
  3. Tambahkan beberapa tabel kosong: satu untuk menyimpan data, dan satu untuk menyimpan model terlatih. Tabel iris_models digunakan untuk menyimpan model berseri yang dihasilkan dalam latihan lain.

    Kode berikut membuat tabel untuk data pelatihan.

    DROP TABLE IF EXISTS iris_data;
    GO
    CREATE TABLE iris_data (
      id INT NOT NULL IDENTITY PRIMARY KEY
      , "Sepal.Length" FLOAT NOT NULL, "Sepal.Width" FLOAT NOT NULL
      , "Petal.Length" FLOAT NOT NULL, "Petal.Width" FLOAT NOT NULL
      , "Species" VARCHAR(100) NOT NULL, "SpeciesId" INT NOT NULL
    );
    
  4. Jalankan kode berikut untuk membuat tabel yang digunakan untuk menyimpan model terlatih. Untuk menyimpan model Python (atau R) dalam SQL Server, model tersebut harus diserialisasikan dan disimpan dalam kolom jenis varbinary(max).

    DROP TABLE IF EXISTS iris_models;
    GO
    
    CREATE TABLE iris_models (
      model_name VARCHAR(50) NOT NULL DEFAULT('default model') PRIMARY KEY,
      model VARBINARY(MAX) NOT NULL
    );
    GO
    

    Selain konten model, biasanya, Anda juga akan menambahkan kolom untuk metadata berguna lainnya, seperti nama model, tanggal dilatih, algoritma dan parameter sumber, data sumber, dan sebagainya. Untuk saat ini kita akan membuatnya sederhana dan hanya menggunakan nama model.

Mengisi tabel

Anda dapat memperoleh data Iris bawaan dari R atau Python. Anda bisa menggunakan Python atau R untuk memuat data ke dalam bingkai data, lalu menyisipkannya ke dalam tabel dalam database. Memindahkan data pelatihan dari sesi eksternal ke dalam tabel adalah proses multistep:

  • Desain prosedur tersimpan yang mendapatkan data yang Anda inginkan.
  • Jalankan prosedur tersimpan untuk benar-benar mendapatkan data.
  • Buat pernyataan INSERT untuk menentukan di mana data yang diambil harus disimpan.
  1. Pada sistem dengan integrasi Python, buat prosedur tersimpan berikut yang menggunakan kode Python untuk memuat data.

    CREATE PROCEDURE get_iris_dataset
    AS
    BEGIN
    EXEC sp_execute_external_script @language = N'Python', 
    @script = N'
    from sklearn import datasets
    iris = datasets.load_iris()
    iris_data = pandas.DataFrame(iris.data)
    iris_data["Species"] = pandas.Categorical.from_codes(iris.target, iris.target_names)
    iris_data["SpeciesId"] = iris.target
    ', 
    @input_data_1 = N'', 
    @output_data_1_name = N'iris_data'
    WITH RESULT SETS (("Sepal.Length" float not null, "Sepal.Width" float not null, "Petal.Length" float not null, "Petal.Width" float not null, "Species" varchar(100) not null, "SpeciesId" int not null));
    END;
    GO
    

    Ketika Anda menjalankan kode ini, Anda akan mendapatkan pesan "Perintah berhasil diselesaikan." Semua ini berarti bahwa prosedur tersimpan telah dibuat sesuai dengan spesifikasi Anda.

  2. Atau, pada sistem yang memiliki integrasi R, buat prosedur yang menggunakan R sebagai gantinya.

    CREATE PROCEDURE get_iris_dataset
    AS
    BEGIN
    EXEC sp_execute_external_script @language = N'R', 
    @script = N'
    library(RevoScaleR)
    data(iris)
    iris$SpeciesID <- c(unclass(iris$Species))
    iris_data <- iris
    ', 
    @input_data_1 = N'', 
    @output_data_1_name = N'iris_data'
    WITH RESULT SETS (("Sepal.Length" float not null, "Sepal.Width" float not null, "Petal.Length" float not null, "Petal.Width" float not null, "Species" varchar(100) not null, "SpeciesId" int not null));
    END;
    GO
    
  3. Untuk benar-benar mengisi tabel, jalankan prosedur tersimpan dan tentukan tabel tempat data harus ditulis. Saat dijalankan, prosedur tersimpan menjalankan kode Python atau R, yang memuat himpunan data Iris bawaan, lalu menyisipkan data ke dalam tabel iris_data .

    INSERT INTO iris_data ("Sepal.Length", "Sepal.Width", "Petal.Length", "Petal.Width", "Species", "SpeciesId")
    EXEC dbo.get_iris_dataset;
    

    Jika Anda baru menggunakan T-SQL, ketahuilah bahwa pernyataan INSERT hanya menambahkan data baru; ini tidak akan memeriksa data yang ada, atau menghapus dan membangun kembali tabel. Untuk menghindari mendapatkan beberapa salinan data yang sama dalam tabel, Anda dapat menjalankan pernyataan ini terlebih dahulu: TRUNCATE TABLE iris_data. Pernyataan T-SQL TRUNCATE TABLE menghapus data yang ada tetapi menjaga struktur tabel tetap utuh.

Mengkueri data

Sebagai langkah validasi, jalankan kueri untuk mengonfirmasi bahwa data telah diunggah.

  1. Di Object Explorer, di bawah Database, klik kanan database irissql, dan mulai kueri baru.

  2. Jalankan beberapa kueri sederhana:

    SELECT TOP(10) * FROM iris_data;
    SELECT COUNT(*) FROM iris_data;
    

Langkah berikutnya

Dalam mulai cepat berikut, Anda akan membuat model pembelajaran mesin dan menyimpannya ke tabel, lalu menggunakan model untuk menghasilkan hasil yang diprediksi.