Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Применимо к: SQL Server 2016 (13.x) и более поздним версиям
Azure SQL Managed Instance
В этом упражнении вы создадите базу данных для хранения данных из набора ирисов Фишера и созданных на их основе моделей. Данные ирисов Фишера входят в дистрибутивы R и Python и используются в рамках учебников по машинному обучению для SQL.
Для выполнения этого упражнения необходимо иметь SQL Server Management Studio (SSMS) или другое средство, которое может выполнять запросы T-SQL.
Этот набор данных используется в следующих учебниках и кратких руководствах:
Создание базы данных
Запустите SQL Server Management Studio и откройте новое окно Запрос.
Создайте новую базу данных для этого проекта и измените контекст окна Запрос, чтобы использовать эту базу.
CREATE DATABASE irissql GO USE irissql GOДобавьте пустые таблицы: одну для хранения данных, а другую — для хранения обученных моделей. Таблица iris_models используется для хранения сериализованных моделей, создаваемых в рамках других упражнений.
В следующем коде создается таблица для обучающих данных.
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 );Выполните следующий код, чтобы создать таблицу для хранения обученной модели. Сохраняемые модели Python (или R) в SQL Server необходимо сериализовать и поместить в столбец типа 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Помимо содержимого модели, как правило, следует добавить столбцы для других полезных метаданных, таких как имя модели, дата обучения, исходные алгоритм и параметры, исходные данные и т. д. Для большего удобства пока мы будем использовать только имя модели.
Заполнение таблицы
Вы можете получить данные встроенного набора Iris как из R так и из Python. Вы можете загрузить данные в кадр данных с помощью Python или R и затем вставить его в таблицу в базе данных. Перемещение обучающих данных из внешнего сеанса в таблицу выполняется в несколько шагов:
- Создайте хранимую процедуру, которая получает нужные данные.
- Выполните хранимую процедуру, чтобы получить данные.
- Создайте инструкцию INSERT, чтобы указать, где требуется сохранить извлеченные данные.
В системах с интеграцией с Python создайте следующую хранимую процедуру, которая использует код Python для загрузки данных.
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При выполнении этого кода вы получите сообщение "Команды успешно выполнены". Все это означает, что хранимая процедура создана в соответствии с вашими спецификациями.
В системах с интеграцией с R вместо нее следует создать процедуру, использующую 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Чтобы заполнить таблицу, выполните хранимую процедуру и укажите таблицу, в которую требуется записать данные. После запуска эта хранимая процедура выполняет код Python или R, который загружает встроенный набор данных Iris и затем вставляет данные в таблицу iris_data.
INSERT INTO iris_data ("Sepal.Length", "Sepal.Width", "Petal.Length", "Petal.Width", "Species", "SpeciesId") EXEC dbo.get_iris_dataset;Если вы не знакомы с T-SQL, учтите, что инструкция INSERT только добавляет новые данные. Она не проверяет существующие данные и не выполняет удаление или перестроение таблицы. Чтобы исключить многократное копирование одних и тех же данных в таблицу, можно сначала выполнить следующую инструкцию:
TRUNCATE TABLE iris_data. Инструкция T-SQL TRUNCATE TABLE удаляет существующие данные, сохраняя при этом структуру таблицы в неизменном виде.
Запрос данных
Для проверки выполните запрос и убедитесь, что данные были отправлены.
В разделе "Базы данных" обозревателя объектов щелкните правой кнопкой мыши базу irissql и запустите новый запрос.
Выполните несколько простых запросов:
SELECT TOP(10) * FROM iris_data; SELECT COUNT(*) FROM iris_data;
Следующие шаги
В следующем кратком руководстве вы создадите модель машинного обучения и сохраните ее в таблице, после чего получите результаты прогноза на ее основе.