Megosztás a következőn keresztül:


Python- és R-tutorialokhoz készült Iris bemutató adatok SQL gépi tanulással

A következőkre vonatkozik: Sql Server 2016 (13.x) és újabb verziók felügyelt Azure SQL-példány

Ebben a gyakorlatban hozzon létre egy adatbázist, amely adatokat tárol az Írisz virág adatkészletéből és modelljeiből ugyanazon adatok alapján. Az Írisz-adatok az R- és Python-disztribúciókban is megtalálhatók, és az SQL machine learninghez készült gépi tanulási oktatóanyagokban használatosak.

A gyakorlat elvégzéséhez rendelkeznie kell az SQL Server Management Studio (SSMS) vagy egy másik olyan eszközzel, amely T-SQL-lekérdezéseket képes futtatni.

Az adatkészletet használó oktatóanyagok és rövid útmutatók a következők:

Az adatbázis létrehozása

  1. Indítsa el az SQL Server Management Studiót, és nyisson meg egy új lekérdezési ablakot.

  2. Hozzon létre egy új adatbázist ehhez a projekthez, és módosítsa a Lekérdezés ablak környezetét az új adatbázis használatára.

    CREATE DATABASE irissql
    GO
    USE irissql
    GO
    
  3. Adjon hozzá néhány üres táblát: egyet az adatok tárolásához, egyet pedig a betanított modellek tárolásához. A iris_models táblázat más gyakorlatokban létrehozott szerializált modellek tárolására szolgál.

    Az alábbi kód létrehozza a betanítási adatok tábláját.

    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. Futtassa a következő kódot a betanított modell tárolásához használt tábla létrehozásához. A Python-modellek SQL Serveren való mentéséhez szerializálni kell őket, és egy varbinary(max) típusú oszlopban kell tárolni őket.

    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
    

    A modell tartalma mellett általában más hasznos metaadatokhoz is hozzáadhat oszlopokat, például a modell nevét, a betanítás dátumát, a forrásalgoritmust és paramétereket, a forrásadatokat stb. Egyelőre egyszerűnek tartjuk, és csak a modell nevét használjuk.

A táblázat feltöltése

A beépített Írisz-adatokat R-ből vagy Pythonból is beszerezheti. A Python vagy az R használatával betöltheti az adatokat egy adatkeretbe, majd beszúrhatja az adatbázis egyik táblájába. A betanítási adatok külső munkamenetből táblázatba való áthelyezése többlépéses folyamat:

  • Tervezzen meg egy tárolt eljárást, amely megszerzi a kívánt adatokat.
  • Hajtsa végre a tárolt eljárást az adatok tényleges lekéréséhez.
  • Hozzon létre egy INSERT utasítást, ahová a beolvasott adatokat menteni kell.
  1. Python-integrációval rendelkező rendszereken hozza létre a következő tárolt eljárást, amely Python-kóddal tölti be az adatokat.

    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
    

    A kód futtatásakor a "Parancsok sikeresen befejeződött" üzenetet kell kapnia. Mindez azt jelenti, hogy a tárolt eljárás az Ön specifikációinak megfelelően lett létrehozva.

  2. Alternatív megoldásként az R-integrációval rendelkező rendszereken hozzon létre egy R-t használó eljárást.

    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. A tábla tényleges feltöltéséhez futtassa a tárolt eljárást, és adja meg azt a táblát, amelyben az adatokat meg kell írni. Futtatáskor a tárolt eljárás végrehajtja a Python- vagy R-kódot, amely betölti a beépített Írisz-adatkészletet, majd beszúrja az adatokat a iris_data táblába.

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

    Ha még nem ismeri a T-SQL-t, vegye figyelembe, hogy az INSERT utasítás csak új adatokat ad hozzá; nem ellenőrzi a meglévő adatokat, és nem törli és újraépíti a táblát. Ha nem szeretne több másolatot kapni ugyanazon adatokról egy táblában, először futtassa ezt az utasítást: TRUNCATE TABLE iris_data. A T-SQL TRUNCATE TABLE utasítás törli a meglévő adatokat, de megőrzi a tábla szerkezetét.

Adatok lekérdezése

Érvényesítési lépésként futtasson egy lekérdezést az adatok feltöltésének megerősítéséhez.

  1. Az Object Explorer Adatbázisok területén kattintson a jobb gombbal az irissql-adatbázisra , és indítsa el az új lekérdezést.

  2. Futtasson néhány egyszerű lekérdezést:

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

Következő lépések

Az alábbi rövid útmutatóban létrehoz egy gépi tanulási modellt, és menti egy táblába, majd a modell használatával előrejelzett eredményeket hoz létre.