Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: SQL Server 2016 (13.x) и более поздних версий
Эта часть 9 входит в состав серии учебников по RevoScaleR, посвященной использованию функций RevoScaleR в SQL Server.
В этом учебнике вы получите сведения о функциях RevoScaleR для преобразования данных на разных этапах анализа.
- Использование rxDataStep для создания и преобразования подмножества данных
- Использование rxImport для преобразования транзитных данных в XDF-файле или в кадре данных в памяти во время импорта
Функции rxSummary, rxCube, rxLinModи rxLogit поддерживают преобразования данных, хотя и не предназначены специально для перемещения данных.
Использование функции rxDataStep для преобразования переменных
Функция rxDataStep обрабатывает данные по одному блоку за раз, считывая их из одного источника данных и записывая в другой. Вы можете указать столбцы, которые нужно преобразовать, загружаемые преобразования и т. д.
Чтобы сделать этот пример интереснее, используем функцию из другого пакета R для преобразования данных. Пакет boot является одним из "рекомендованных" пакетов, то есть boot входит в состав каждого дистрибутива R, но не загружается автоматически при запуске. Поэтому пакет должен быть уже доступен в экземпляре SQL Server, настроенном для интеграции R.
Пакет boot содержит нужную вам функцию inv.logit, которая выполняет обратное логит-преобразование. То есть функция inv.logit преобразует логит обратно в значение вероятности по шкале [0,1].
Совет
Кроме того, чтобы получать прогнозы по этой шкале, можно задать для параметра type значение response в исходном вызове функции rxPredict.
Сначала создайте источник данных, в котором будут храниться данные, предназначенные для таблицы
ccScoreOutput.sqlOutScoreDS <- RxSqlServerData( table = "ccScoreOutput", connectionString = sqlConnString, rowsPerRead = sqlRowsPerRead )Добавьте еще один источник данных, в котором будут храниться данные для таблицы
ccScoreOutput2.sqlOutScoreDS2 <- RxSqlServerData( table = "ccScoreOutput2", connectionString = sqlConnString, rowsPerRead = sqlRowsPerRead )В новой таблице сохраните все переменные из предыдущей таблицы
ccScoreOutput, а также новые переменные.Задайте контекст вычислений экземпляру SQL Server.
rxSetComputeContext(sqlCompute)Используйте функцию rxSqlServerTableExists, чтобы проверить наличие таблицы выходных данных
ccScoreOutput2. Если таблица существует, удалите ее с помощью функции rxSqlServerDropTable.if (rxSqlServerTableExists("ccScoreOutput2")) rxSqlServerDropTable("ccScoreOutput2")Вызовите функцию rxDataStep и укажите требуемые преобразования в списке.
rxDataStep(inData = sqlOutScoreDS, outFile = sqlOutScoreDS2, transforms = list(ccFraudProb = inv.logit(ccFraudLogitScore)), transformPackages = "boot", overwrite = TRUE)При определении преобразований, применяемых к каждому столбцу, можно указать дополнительные пакеты R, необходимые для выполнения преобразований. Дополнительные сведения о возможных типах преобразования см. в разделе Преобразование и выделение подмножеств данных с помощью RevoScaleR.
Вызовите функцию rxGetVarInfo для просмотра сводки переменных в новом наборе данных.
rxGetVarInfo(sqlOutScoreDS2)
Результаты
Var 1: ccFraudLogitScore, Type: numeric
Var 2: state, Type: character
Var 3: gender, Type: character
Var 4: cardholder, Type: character
Var 5: balance, Type: integer
Var 6: numTrans, Type: integer
Var 7: numIntlTrans, Type: integer
Var 8: creditLine, Type: integer
Var 9: ccFraudProb, Type: numeric
Исходные оценки логита сохраняются, однако был добавлен новый столбец ccFraudProb, в котором оценки логита представлены значениями от 0 до 1.
Обратите внимание на то, что факторные переменные были записаны в таблицу ccScoreOutput2 как символьные данные. Чтобы использовать их как коэффициенты в последующих операциях анализа, задайте уровни с помощью параметра colInfo .