Partilhar via


Dados de demonstração Iris para tutoriais Python e R com aprendizado de máquina SQL

Aplica-se a: SQL Server 2016 (13.x) e versões posteriores Instância Gerenciada SQL do Azure

Neste exercício, crie um banco de dados para armazenar dados do conjunto de dados da flor Iris e modelos baseados nos mesmos dados. Os dados Iris estão incluídos nas distribuições R e Python e são usados em tutoriais de aprendizado de máquina para aprendizado de máquina SQL.

Para completar este exercício, deve ter o SQL Server Management Studio (SSMS) ou outra ferramenta que possa executar consultas T-SQL.

Os tutoriais e guias de início rápido usando esse conjunto de dados incluem o seguinte:

Criar a base de dados

  1. Inicie o SQL Server Management Studio e abra uma nova janela Consulta .

  2. Crie um novo banco de dados para este projeto e altere o contexto da janela Consulta para usar o novo banco de dados.

    CREATE DATABASE irissql
    GO
    USE irissql
    GO
    
  3. Adicione algumas tabelas vazias: uma para armazenar os dados e outra para armazenar os modelos treinados. A tabela iris_models é usada para armazenar modelos serializados gerados em outros exercícios.

    O código a seguir cria a tabela para os dados de treinamento.

    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. Execute o código a seguir para criar a tabela usada para armazenar o modelo treinado. Para salvar modelos Python (ou R) no SQL Server, eles devem ser serializados e armazenados em uma coluna do tipo 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
    

    Além do conteúdo do modelo, normalmente, você também adicionaria colunas para outros metadados úteis, como o nome do modelo, a data em que foi treinado, o algoritmo e os parâmetros de origem, os dados de origem e assim por diante. Por enquanto, vamos mantê-lo simples e usar apenas o nome do modelo.

Preencher a tabela

Você pode obter os dados Iris incorporados tanto de R quanto de Python. Você pode usar Python ou R para carregar os dados em um quadro de dados e, em seguida, inseri-los em uma tabela no banco de dados. Mover dados de treinamento de uma sessão externa para uma tabela é um processo de várias etapas:

  • Crie um procedimento armazenado que obtenha os dados desejados.
  • Execute o procedimento armazenado para obter efetivamente os dados.
  • Construa uma instrução INSERT para especificar onde os dados recuperados devem ser salvos.
  1. Em sistemas com integração Python, crie o seguinte procedimento armazenado que usa código Python para carregar os dados.

    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
    

    Ao executar esse código, você deve receber a mensagem "Comandos concluídos com êxito". Tudo isso significa que o procedimento armazenado foi criado de acordo com suas especificações.

  2. Como alternativa, em sistemas com integração R, crie um procedimento que use R.

    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. Para realmente preencher a tabela, execute o procedimento armazenado e especifique a tabela onde os dados devem ser gravados. Quando executado, o procedimento armazenado executa o código Python ou R, que carrega o conjunto de dados Iris interno e, em seguida, insere os dados na tabela iris_data .

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

    Se você é novo no T-SQL, esteja ciente de que a instrução INSERT apenas adiciona novos dados; ele não verificará dados existentes nem excluirá e reconstruirá a tabela. Para evitar obter várias cópias dos mesmos dados em uma tabela, você pode executar esta instrução primeiro: TRUNCATE TABLE iris_data. A instrução T-SQL TRUNCATE TABLE exclui dados existentes, mas mantém a estrutura da tabela intacta.

Consultar os dados

Como etapa de validação, execute uma consulta para confirmar que os dados foram carregados.

  1. No Pesquisador de Objetos, em Bancos de Dados, clique com o botão direito do mouse no banco de dados irissql e inicie uma nova consulta.

  2. Execute algumas consultas simples:

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

Próximos passos

No início rápido a seguir, você criará um modelo de aprendizado de máquina e o salvará em uma tabela e, em seguida, usará o modelo para gerar resultados previstos.