Partager via


Transformer des données à l’aide de R (didacticiel sur SQL Server et RevoScaleR)

S’applique à : SQL Server 2016 (13.x) et versions ultérieures

Il s’agit du tutoriel 9 de la série de tutoriels RevoScaleR qui traite de l’utilisation des fonctions RevoScaleR avec SQL Server.

Dans ce tutoriel, vous allez découvrir les fonctions RevoScaleR pour transformer des données à différents stades de votre analyse.

  • Utilisez rxDataStep pour créer et transformer un sous-ensemble de données
  • Utilisez rxImport pour transformer des données en transit vers ou à partir d’un fichier XDF ou d’une trame de données en mémoire pendant l’importation

Bien qu’elles ne soient pas spécifiquement conçues pour le déplacement des données, les fonctions rxSummary, rxCube, rxLinModet rxLogit prennent toutes en charge les transformations de données à la volée.

Utiliser rxDataStep pour transformer des variables

La fonction rxDataStep traite les données segment par segment, en lisant à partir d’une source de données et en écrivant dans une autre. Vous pouvez spécifier les colonnes à transformer, les transformations à charger, etc.

Pour rendre cet exemple intéressant, utilisez une fonction d’un autre package R pour transformer les données. Le package boot est un des packages « recommandés » ; en d’autres termes, boot est inclus avec chaque distribution de R, mais n’est pas chargé automatiquement au démarrage. Ainsi, le package doit déjà être disponible sur l’instance SQL Server configurée pour l’intégration de R.

À partir du package de démarrage, utilisez la fonction inv.logit pour calculer l’inverse d’un logit. Autrement dit, la fonction inv.logit convertit un logit en une probabilité sur l’échelle [0,1].

Conseil

Une autre façon d’obtenir des prédictions dans cette échelle consiste à définir le paramètre type sur réponse dans l’appel initial à rxPredict.

  1. Commencez par créer une source de données qui contiendra les données destinées à la table, ccScoreOutput.

    sqlOutScoreDS <- RxSqlServerData( table =  "ccScoreOutput",  connectionString = sqlConnString, rowsPerRead = sqlRowsPerRead )
    
  2. Ajoutez une autre source de données qui contiendra les données de la table ccScoreOutput2.

    sqlOutScoreDS2 <- RxSqlServerData( table =  "ccScoreOutput2",  connectionString = sqlConnString, rowsPerRead = sqlRowsPerRead )
    

    Dans la nouvelle table, stockez toutes les variables de la table ccScoreOutput précédente, ainsi que la variable nouvellement créée.

  3. Définissez le contexte de calcul sur l’instance SQL Server .

    rxSetComputeContext(sqlCompute)
    
  4. Utilisez la fonction rxSqlServerTableExists pour vérifier si la table de sortie ccScoreOutput2 existe déjà, et si tel est le cas, utilisez la fonction rxSqlServerDropTable pour supprimer la table.

    if (rxSqlServerTableExists("ccScoreOutput2"))     rxSqlServerDropTable("ccScoreOutput2")
    
  5. Appelez la fonction rxDataStep et spécifiez les transformations de votre choix dans une liste.

    rxDataStep(inData = sqlOutScoreDS,
        outFile = sqlOutScoreDS2,
        transforms = list(ccFraudProb = inv.logit(ccFraudLogitScore)),
        transformPackages = "boot",
        overwrite = TRUE)
    

    Quand vous définissez les transformations qui sont appliquées à chaque colonne, vous pouvez également spécifier les packages R supplémentaires qui sont nécessaires pour effectuer les transformations. Pour plus d’informations sur les types de transformations que vous pouvez effectuer, consultez How to transform and subset data using RevoScaleR(Transformation de données et création de sous-ensembles de données avec RevoScaleR).

  6. Appelez rxGetVarInfo pour afficher un récapitulatif des variables dans le nouveau dataset.

rxGetVarInfo(sqlOutScoreDS2)

Résultats

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

Les scores de logit d’origine sont conservés, mais une nouvelle colonne, ccFraudProb, a été ajoutée. Les scores logit y sont représentés sous forme de valeurs comprises entre 0 et 1.

Notez que les variables de facteur ont été écrites dans la table ccScoreOutput2 en tant que données de type caractère. Pour les utiliser comme facteurs dans les analyses ultérieures, utilisez le paramètre colInfo pour spécifier les niveaux.

Étapes suivantes