Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Применимо к: SQL Server 2016 (13.x) и более поздним версиям
Azure SQL Managed Instance
В первой части этой серии учебников из пяти частей вы узнаете, как обучить модель машинного обучения с помощью R. Вы обучите модель с помощью функций данных, созданных в предыдущей части, а затем сохраните обученную модель в таблице SQL Server. В этом случае пакеты R уже установлены со службами R (в базе данных), поэтому все можно сделать из SQL.
Работая с этой статьей, вы узнаете о следующем.
- Создание и обучение модели с помощью хранимой процедуры SQL
- Сохранение обученной модели в таблице SQL
В первой части были установлены необходимые компоненты и восстановлена демонстрационная база данных.
Во второй части вы узнали, как проверить пример данных и создать несколько графиков.
В третьей части вы узнали, как создавать функции из необработанных данных с помощью функции Transact-SQL. Затем вы вызвали эту функцию из хранимой процедуры, чтобы создать таблицу, содержащую значения характеристик.
Из пятой части вы узнаете, как ввести в эксплуатацию модели, которые были обучены и сохранены в соответствии с инструкциями в четвертой части.
Создание хранимой процедуры
При вызове R из T-SQL используется системная хранимая процедура sp_execute_external_script. Однако для часто повторяемых процессов (например, повторное обучение модели) проще инкапсулировать вызов процедуры sp_execute_external_script в другую хранимую процедуру.
В Management Studio откройте новое окно запроса .
Выполните следующую инструкцию, чтобы создать хранимую процедуру RTrainLogitModel. Эта хранимая процедура определяет входные данные и использует glm для создания модели логистической регрессии.
CREATE PROCEDURE [dbo].[RTrainLogitModel] (@trained_model varbinary(max) OUTPUT) AS BEGIN DECLARE @inquery nvarchar(max) = N' select tipped, fare_amount, passenger_count,trip_time_in_secs,trip_distance, pickup_datetime, dropoff_datetime, dbo.fnCalculateDistance(pickup_latitude, pickup_longitude, dropoff_latitude, dropoff_longitude) as direct_distance from nyctaxi_sample tablesample (70 percent) repeatable (98052) ' EXEC sp_execute_external_script @language = N'R', @script = N' ## Create model logitObj <- glm(tipped ~ passenger_count + trip_distance + trip_time_in_secs + direct_distance, data = InputDataSet, family = binomial) summary(logitObj) ## Serialize model trained_model <- as.raw(serialize(logitObj, NULL)); ', @input_data_1 = @inquery, @params = N'@trained_model varbinary(max) OUTPUT', @trained_model = @trained_model OUTPUT; END GOЧтобы оставить часть данных для тестирования модели, из таблицы данных по работе такси случайным образом выбирается 70 % данных, которые будут использованы для обучения.
Запрос SELECT использует пользовательскую скалярную функцию fnCalculateDistance для вычисления прямого расстояния между местами посадки и высадки. Результаты выполнения запроса сохраняются во входной переменной R по умолчанию
InputDataset.Этот скрипт R вызывает функцию R glm для создания модели логистической регрессии.
Двоичная переменная tipped применяется в качестве столбца меток или результатов, и модель компонуется с использованием следующих столбцов характеристик: passenger_count, trip_distance, trip_time_in_secs и direct_distance.
Модель обучения, сохраненная в переменной R
logitObj, сериализуется и возвращается в качестве выходного параметра.
Обучение и развертывание модели R с помощью хранимой процедуры
Поскольку хранимая процедура уже включает в себя определение входных данных, указывать входной запрос не требуется.
Для обучения и развертывания модели R вызовите хранимую процедуру и вставьте ее в таблицу базы данных nyc_taxi_models, чтобы ее можно было использовать для будущих прогнозов:
DECLARE @model VARBINARY(MAX); EXEC RTrainLogitModel @model OUTPUT; INSERT INTO nyc_taxi_models (name, model) VALUES('RTrainLogit_model', @model);Просмотрите окно "Сообщения" в Среде Management Studio для сообщений, которые будут переданы в поток stdout R, как показано в следующем сообщении:
"Сообщения STDOUT из внешнего скрипта: строки считываются: 1193025, всего обработанных строк: 1193025, общее время блока: 0,093 секунды"
После выполнения инструкции откройте таблицу nyc_taxi_models. Обработка данных и компоновка модели может занять некоторое время.
Вы увидите, что была добавлена одна новая строка, которая содержит сериализованную модель в столбце model и имя модели RTrainLogit_model в столбце name.
model name ---------------------------- ------------------ 0x580A00000002000302020.... RTrainLogit_model
В следующей части этого учебника обученная модель будет использоваться для создания прогнозов.
Следующие шаги
Работая с этой статьей, вы выполните следующие задачи:
- Создание и обучение модели с помощью хранимой процедуры SQL
- Обученная модель сохранена в таблице SQL