Données de démonstration Iris pour les didacticiels Python et R dans SQL ServerIris demo data for Python and R tutorials in SQL Server

S’APPLIQUE À : ouiSQL Server nonAzure SQL Database nonAzure SQL Data Warehouse nonParallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Dans cet exercice, créez une base de données SQL Server pour stocker des données à partir du jeu de données de la fleur Iris et des modèles basés sur les mêmes données.In this exercise, create a SQL Server database to store data from the Iris flower data set and models based on the same data. Les données de l’iris sont incluses dans les distributions R et Python installées par SQL Server, et sont utilisées dans les didacticiels de Machine Learning pour SQL Server.Iris data is included in both the R and Python distributions installed by SQL Server, and is used in machine learning tutorials for SQL Server.

Pour effectuer cet exercice, vous devez disposer d' SQL Server Management Studio ou d’un autre outil capable d’exécuter des requêtes T-SQL.To complete this exercise, you should have SQL Server Management Studio or another tool that can run T-SQL queries.

Les didacticiels et les guides de démarrage rapide utilisant ce jeu de données sont les suivants:Tutorials and quickstarts using this data set include the following:

Créer la base de donnéesCreate the database

  1. Démarrez SQL Server Management Studio, puis ouvrez une nouvelle fenêtre de requête .Start SQL Server Management Studio, and open a new Query window.

  2. Créez une nouvelle base de données pour ce projet, puis modifiez le contexte de votre fenêtre de requête pour utiliser la nouvelle base de données.Create a new database for this project, and change the context of your Query window to use the new database.

    CREATE DATABASE irissql
    GO
    USE irissql
    GO
    

    Conseil

    Si vous ne connaissez pas SQL Server ou que vous travaillez sur un serveur que vous possédez, une erreur courante consiste à vous connecter et à commencer à travailler sans remarquer que vous êtes dans la base de données Master .If you're new to SQL Server, or are working on a server you own, a common mistake is to log in and start working without noticing that you are in the master database. Pour vous assurer que vous utilisez la base de données correcte, spécifiez toujours le contexte USE <database name> à l’aide de l' use irissqlinstruction (par exemple,).To be sure that you are using the correct database, always specify the context using the USE <database name> statement (for example, use irissql).

  3. Ajoutez des tables vides: l’une pour stocker les données et l’autre pour stocker les modèles formés.Add some empty tables: one to store the data, and one to store the trained models. La table iris_models est utilisée pour stocker les modèles sérialisés générés dans d’autres exercices.The iris_models table is used for storing serialized models generated in other exercises.

    Le code suivant crée la table pour les données d’apprentissage.The following code creates the table for the training data.

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

    Conseil

    Si vous débutez avec T-SQL, il est payant de mémoriser DROP...IF l’instruction.If you are new to T-SQL, it pays to memorize the DROP...IF statement. Lorsque vous essayez de créer une table et qu’une table existe déjà, SQL Server retourne une erreur: «Il existe déjà un objet nommé «iris_data» dans la base de données».When you try to create a table and one already exists, SQL Server returns an error: "There is already an object named 'iris_data' in the database." Pour éviter de telles erreurs, vous pouvez supprimer des tables ou d’autres objets existants dans le cadre de votre code.One way to avoid such errors is to delete any existing tables or other objects as part of your code.

  4. Exécutez le code suivant pour créer la table utilisée pour le stockage du modèle formé.Run the following code to create the table used for storing the trained model. Pour enregistrer des modèles Python (ou R) dans SQL Server, ils doivent être sérialisés et stockés dans une colonne de type varbinary (max) .To save Python (or R) models in SQL Server, they must be serialized and stored in a column of type 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
    

    En plus du contenu du modèle, en général, vous ajoutez également des colonnes pour d’autres métadonnées utiles, telles que le nom du modèle, la date à laquelle il a été formé, l’algorithme source, les paramètres, les données sources, etc.In addition to the model contents, typically, you would also add columns for other useful metadata, such as the model's name, the date it was trained, the source algorithm and parameters, source data, and so forth. Pour l’instant, nous allons simplifier et utiliser simplement le nom du modèle.For now we'll keep it simple and use just the model name.

Remplir la tablePopulate the table

Vous pouvez obtenir des données d’IRIS intégrées à partir de R ou de Python.You can obtain built-in Iris data from either R or Python. Vous pouvez utiliser python ou R pour charger les données dans une trame de données, puis les insérer dans une table de la base de données.You can use Python or R to load the data into a data frame, and then insert it into a table in the database. Le déplacement des données d’apprentissage d’une session externe dans une table de SQL Server est un processus à étapes:Moving training data from an external session into a SQL Server table is a multistep process:

  • Concevez une procédure stockée qui obtient les données souhaitées.Design a stored procedure that gets the data you want.
  • Exécutez la procédure stockée pour récupérer les données.Execute the stored procedure to actually get the data.
  • Construisez une instruction INSERT pour spécifier l’emplacement où les données récupérées doivent être enregistrées.Construct an INSERT statement to specify where the retrieved data should be saved.
  1. Sur les systèmes avec intégration Python, créez la procédure stockée suivante qui utilise le code Python pour charger les données.On systems with Python integration, create the following stored procedure that uses Python code to load the 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
    

    Lorsque vous exécutez ce code, vous devez recevoir le message «commandes terminées avec succès».When you run this code, you should get the message "Commands completed successfully." Cela signifie que la procédure stockée a été créée en fonction de vos spécifications.All this means is that the stored procedure has been created according to your specifications.

  2. En guise d’alternative, sur les systèmes dotés de l’intégration R, créez une procédure qui utilise R à la place.Alternatively, on systems having R integration, create a procedure that uses R instead.

    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. Pour remplir réellement la table, exécutez la procédure stockée et spécifiez la table dans laquelle les données doivent être écrites.To actually populate the table, run the stored procedure and specify the table where the data should be written. Quand elle est exécutée, la procédure stockée exécute le code python ou R, qui charge le jeu de données Iris intégré, puis insère les données dans la table iris_data .When run, the stored procedure executes the Python or R code, which loads the built-in Iris data set, and then inserts the data into the iris_data table.

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

    Si vous débutez avec T-SQL, sachez que l’instruction INSERT ajoute uniquement de nouvelles données; il ne recherche pas les données existantes, ou supprime et régénère la table.If you're new to T-SQL, be aware that the INSERT statement only adds new data; it won't check for existing data, or delete and rebuild the table. Pour éviter d’obtenir plusieurs copies des mêmes données dans une table, vous pouvez exécuter l’instruction en premier TRUNCATE TABLE iris_data:.To avoid getting multiple copies of the same data in a table, you can run this statement first: TRUNCATE TABLE iris_data. L’instruction T-SQL truncate table supprime les données existantes, mais conserve la structure de la table intacte.The T-SQL TRUNCATE TABLE statement deletes existing data but keeps the structure of the table intact.

    Conseil

    Pour modifier la procédure stockée ultérieurement, vous n’avez pas besoin de la supprimer et de la recréer.To modify the stored procedure later, you don't need to drop and recreate it. Utilisez l’instruction ALTER PROCEDURE .Use the ALTER PROCEDURE statement.

Interroger les donnéesQuery the data

En guise d’étape de validation, exécutez une requête pour confirmer que les données ont été téléchargées.As a validation step, run a query to confirm the data was uploaded.

  1. Dans l’Explorateur d’objets, sous bases de données, cliquez avec le bouton droit sur la base de données irissql et démarrez une nouvelle requête.In Object Explorer, under Databases, right-click the irissql database, and start a new query.

  2. Exécuter des requêtes simples:Run some simple queries:

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

Étapes suivantesNext steps

Dans le démarrage rapide suivant, vous allez créer un modèle de Machine Learning et l’enregistrer dans une table, puis utiliser le modèle pour générer des résultats prédits.In the following quickstart, you will create a machine learning model and save it to a table, and then use the model to generate predicted outcomes.