Transformace dat pomocí R (tutoriál pro SQL Server a RevoScaleR)

platí pro: SQL Server 2016 (13.x) a novější verze

Toto je návod číslo 9 ze série RevoScaleR o tom, jak používat funkce RevoScaleR se SQL Server.

V tomto tutoriálu se naučíte o funkcích RevoScaleR pro transformaci dat v různých fázích vaší analýzy.

  • Použijte rxDataStep k vytvoření a transformaci podmnožiny dat
  • Použijte rxImport k transformaci dat během přenosu do nebo z XDF souboru nebo z datového rámce v paměti během importu

Ačkoliv nejsou specificky určeny pro přesun dat, funkce rxSummary, rxCube, rxLinMod a rxLogit všechny podporují transformace dat.

Použijte rxDataStep k transformaci proměnných

Funkce rxDataStep zpracovává data po jednotlivých částech, čte z jednoho zdroje a zapisuje do jiného. Můžete určit sloupce, které se mají transformovat, transformace, které se mají načíst, a podobně.

Aby byl tento příklad zajímavý, použijme funkci z jiného balíčku R k transformaci dat. Boot balíček je jedním z "doporučených" balíčků, což znamená, že boot je součástí každé distribuce R, ale při startu se nenačítá automaticky. Proto by balíček měl být již dostupný na instanci SQL Server nakonfigurované pro integraci s R.

Z bootovacího balíčku použijte funkci inv.logit, která vypočítá inverzi logitu. To znamená, že funkce inv.logit převádí logit zpět na pravděpodobnost na škále [0,1].

Tip

Dalším způsobem, jak získat predikce v této škále, je nastavit parametr typu na odpověď v původním volání rxPredict.

  1. Začněte vytvořením datového zdroje, který bude obsahovat data určená pro tabuli, ccScoreOutput.

    sqlOutScoreDS <- RxSqlServerData( table =  "ccScoreOutput",  connectionString = sqlConnString, rowsPerRead = sqlRowsPerRead )
    
  2. Přidejte další zdroj dat, který uchovává data pro tabulku ccScoreOutput2.

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

    V nové tabulce uložte všechny proměnné z předchozí ccScoreOutput tabulky plus nově vytvořenou proměnnou.

  3. Nastavte výpočetní kontext na instanci SQL Server.

    rxSetComputeContext(sqlCompute)
    
  4. Použijte funkci rxSqlServerTableExists k ověření, zda výstupní tabulka ccScoreOutput2 již existuje; a pokud ano, použijte funkci rxSqlServerDropTable k smazání tabulky.

    if (rxSqlServerTableExists("ccScoreOutput2"))     rxSqlServerDropTable("ccScoreOutput2")
    
  5. Zavolejte funkci rxDataStep a zadejte požadované transformace v seznamu.

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

    Když definujete transformace, které se aplikují na každý sloupec, můžete také specifikovat další R balíčky, které jsou potřeba k provedení transformací. Pro více informací o typech transformací, které můžete provést, viz Jak transformovat a podmnožovat data pomocí RevoScaleR.

  6. Zavoláním rxGetVarInfo zobrazíte souhrn proměnných v nové datové sadě.

rxGetVarInfo(sqlOutScoreDS2)

Results

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

Původní logitová skóre byla zachována, ale byl přidán nový sloupec ccFraudProb, ve kterém jsou logitová skóre reprezentována jako hodnoty mezi 0 a 1.

Všimněte si, že faktorové proměnné byly zapsány do tabulky ccScoreOutput2 jako znaková data. Pro použití těchto faktorů v následných analýzách použijte parametr colInfo k určení úrovní.

Další krok