Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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
Inicie o SQL Server Management Studio e abra uma nova janela Consulta .
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 GOAdicione 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 );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 ); GOAlé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.
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; GOAo 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.
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; GOPara 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.
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.
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.