Megosztás:


R-oktatóanyag: Adatok feltárása és vizualizációja

A következőkre vonatkozik: Sql Server 2016 (13.x) és újabb verziók felügyelt Azure SQL-példány

Az ötrészes oktatóanyag-sorozat második részében megismerheti a mintaadatokat, és létrehozhat néhány diagramot. Később megtanulhatja, hogyan szerializálhat grafikus objektumokat a Pythonban, majd deszerializálhatja ezeket az objektumokat, és készíthet diagramokat.

Az ötrészes oktatóanyag-sorozat második részében áttekintheti a mintaadatokat, majd létrehozhat néhány diagramot az R alapszintű általános barplot és hist függvények használatával.

A cikk egyik fő célja, hogy bemutatja, hogyan hívhatja meg az R-függvényeket a Transact-SQL tárolt eljárásokban, és hogyan mentheti az eredményeket alkalmazásfájlformátumokban:

  • Tárolt eljárás létrehozása a barplot segítségével, hogy R-ábrát hozzon létre varbináris adatokként. A bcp használatával exportálhatja a bináris streamet egy képfájlba.
  • Hozzon létre egy tárolt eljárást hist a diagram létrehozásához, és mentse az eredményeket JPG- és PDF-kimenetként.

Megjegyzés:

Mivel a vizualizáció olyan hatékony eszköz az adatalakzatok és -eloszlás megértéséhez, az R számos függvényt és csomagot biztosít hisztogramok, pontdiagramok, dobozdiagramok és egyéb adatfeltárási grafikonok létrehozásához. Az R általában egy R-eszközzel hoz létre képeket grafikus kimenethez, amelyet varbináris adattípusként rögzíthet és tárolhat az alkalmazásban való rendereléshez. A képeket bármely támogatási fájlformátumba (.JPG, .PDF stb.) is mentheti.

Ebben a cikkben a következőket fogja megismerni:

  • A mintaadatok áttekintése
  • Diagramok létrehozása R használatával a T-SQL-ben
  • Kimeneti diagramok több fájlformátumban

Az első részben telepítette az előfeltételeket, és visszaállította a mintaadatbázist.

A harmadik részben megtanulhatja, hogyan hozhat létre funkciókat nyers adatokból egy Transact-SQL függvény használatával. Ezután meghívja ezt a függvényt egy tárolt eljárásból, hogy létrehozhasson egy táblát, amely tartalmazza a funkcióértékeket.

A negyedik részben betölti a modulokat, és meghívja a szükséges függvényeket a modell létrehozásához és betanítása egy SQL Server által tárolt eljárás használatával.

Az ötödik részben megtanulhatja, hogyan lehet üzembe helyezni a negyedik részben betanított és mentett modelleket.

Az adatok áttekintése

Az adatelemzési megoldások fejlesztése általában intenzív adatfeltárást és adatvizualizációt is magában foglal. Ezért először szánjon egy percet a mintaadatok áttekintésére, ha még nem tette meg.

Az eredeti nyilvános adatkészletben a taxiazonosítókat és az utazási nyilvántartásokat külön fájlokban adták meg. A mintaadatok használatának megkönnyítése érdekében azonban a két eredeti adatkészlet a medallion, a hack_license és a pickup_datetime oszlophoz lett illesztve. Az adatrekordokat úgy mintázták meg, hogy csak az eredeti rekordszám 1%-át tartalmazza. Az eredményként kapott lemintázott adatkészlet 1 703 957 sort és 23 oszlopot tartalmaz.

Taxiazonosítók

  • A medál oszlop a taxi egyedi azonosítószámát jelöli.

  • A hack_license oszlop tartalmazza a taxisofőr engedélyszámát (anonimizált).

Utazási és viteldíjrekordok

  • Minden utazási rekord tartalmazza a felvétel és lerakás helyét és idejét, valamint az utazás távolságát.

  • Minden viteldíjrekord tartalmazza a fizetési adatokat, például a fizetési típust, a teljes összeget és a tipp összegét.

  • Az utolsó három oszlop különböző gépi tanulási feladatokhoz használható. A tip_amount oszlop folyamatos numerikus értékeket tartalmaz, és a regresszióelemzés címkeoszlopaként használható. A billentett oszlop csak igen/nem értékekkel rendelkezik, és bináris besoroláshoz használatos. A tip_class oszlop több osztálycímkével rendelkezik, ezért többosztályos besorolási feladatokhoz használható címkeként.

    Ez az útmutató csak a bináris besorolási feladatot mutatja be; a másik két gépi tanulási feladathoz, a regresszióhoz és a többosztályos besoroláshoz is kipróbálhat modelleket.

  • A címkeoszlopokhoz használt értékek mind a tip_amount oszlopon alapulnak az alábbi üzleti szabályok használatával:

    Származtatott oszlop neve Szabály
    Megbillent Ha tip_amount > 0, akkor tippelt = 1, egyébként tippelt = 0
    tip_class 0. elem: tip_mennyiség = $0

    1. osztály: tip_amount > $0 és tip_amount <= $5

    2. osztály: tip_amount > $5 és tip_amount <= $10

    3. osztály: tip_amount > $10 és tip_amount <= $20

    4. osztály: borravaló_összeg > $20

Diagramok létrehozása R használatával a T-SQL-ben

Fontos

Az SQL Server 2019-től kezdődően az elkülönítési mechanizmushoz megfelelő engedélyeket kell adnia ahhoz a könyvtárhoz, amelyben a diagramfájl található. Az engedélyek beállításáról további információt a Windows SQL Server 2019 Fájlengedélyek szakaszában talál: A Machine Learning Services elkülönítési változásai.

A diagram létrehozásához használja az R függvényt barplot. Ez a lépés egy hisztogramot ábrázol egy Transact-SQL lekérdezés adatai alapján. Ezt a függvényt egy tárolt eljárásba, az RPlotHistogramba csomagolhatja.

  1. Az SQL Server Management Studióban az Object Explorerben kattintson a jobb gombbal a NYCTaxi_Sample adatbázisra, és válassza az Új lekérdezés lehetőséget. Vagy az Azure Data Studióban válassza az Új jegyzetfüzet lehetőséget a Fájl menüből, és csatlakozzon az adatbázishoz.

  2. Illessze be a következő szkriptet a hisztogramot ábrázoló tárolt eljárás létrehozásához. Ez a példa neve RPlotHistogram.

    CREATE PROCEDURE [dbo].[RPlotHistogram]
    AS
    BEGIN
      SET NOCOUNT ON;
      DECLARE @query nvarchar(max) =  
      N'SELECT tipped FROM [dbo].[nyctaxi_sample]'  
      EXECUTE sp_execute_external_script @language = N'R',  
                                         @script = N'  
       image_file = tempfile();  
       jpeg(filename = image_file);  
       #Plot histogram  
       barplot(table(InputDataSet$tipped), main = "Tip Histogram", col="lightgreen", xlab="Tipped or not", ylab = "Counts", space=0)
       dev.off();  
       OutputDataSet <- data.frame(data=readBin(file(image_file, "rb"), what=raw(), n=1e6));  
       ',  
       @input_data_1 = @query  
       WITH RESULT SETS ((plot varbinary(max)));  
    END
    GO
    

Ebben a szkriptben az alábbiakat kell megérteni:

  • A változó @query a lekérdezés szövegét ('SELECT tipped FROM nyctaxi_sample') határozza meg, amelyet az R-szkript argumentumként ad át a szkript bemeneti változójának. @input_data_1 A külső folyamatokként futó R-szkriptek esetében egy-az-egyhez leképezéssel kell rendelkeznie a szkript bemenetei és a sp_execute_external_script rendszer által tárolt eljárás bemenetei között, amely elindítja az R-munkamenetet az SQL Serveren.

  • Az R-szkriptben egy változó (image_file) van definiálva a rendszerkép tárolásához.

  • A barplot függvényt a rendszer meghívja a diagram létrehozásához.

  • Az R-eszköz ki van kapcsolva , mert ezt a parancsot külső szkriptként futtatja az SQL Serveren. Általában az R-ben, amikor magas szintű ábrázolási parancsot ad ki, az R megnyit egy grafikus ablakot, amelyet eszköznek hívnak. Kikapcsolhatja az eszközt, ha fájlba ír, vagy más módon kezeli a kimenetet.

  • Az R grafikus objektum egy R data.frame-re van szerializálva a kimenethez.

Hajtsa végre a tárolt eljárást, és a bcp használatával exportáljon bináris adatokat egy képfájlba

A tárolt eljárás varbináris adatok adatfolyamaként adja vissza a képet, amelyet nyilvánvalóan nem tekinthet meg közvetlenül. A bcp segédprogrammal azonban lekérheti a varbináris adatokat, és képfájlként mentheti őket egy ügyfélszámítógépen.

  1. A Management Studióban futtassa a következő utasítást:

    EXEC [dbo].[RPlotHistogram]
    

    Results

    plot0xFFD8FFE000104A4649...

  2. Nyisson meg egy PowerShell-parancssort, és futtassa a következő parancsot, és adja meg argumentumként a megfelelő példánynevet, adatbázisnevet, felhasználónevet és hitelesítő adatokat. A Windows-identitásokat használó felhasználók esetében az -U és a -P helyére a -T elemet kell lecserélni.

    bcp "exec RPlotHistogram" queryout "plot.jpg" -S <SQL Server instance name> -d  NYCTaxi_Sample  -U <user name> -P <password> -T
    

    Megjegyzés:

    A bcp parancskapcsolói megkülönböztetik a kis- és nagybetűket.

  3. Ha a kapcsolat sikeres, a rendszer kérni fogja, hogy adjon meg további információt a grafikus fájlformátumról.

    Az alapértelmezett beállítások elfogadásához nyomja le az ENTER billentyűt minden egyes kérdésnél, kivéve a következő módosításokat:

    • A meződiagram előtaghosszához írja be a 0.

    • Írja be az Y értéket, ha menteni szeretné a kimeneti paramétereket a későbbi újrafelhasználáshoz.

    Enter the file storage type of field plot [varbinary(max)]: 
    Enter prefix-length of field plot [8]: 0
    Enter length of field plot [0]:
    Enter field terminator [none]:
    
    Do you want to save this format information in a file? [Y/n]
    Host filename [bcp.fmt]:
    

    Results

    Starting copy...
    1 rows copied.
    Network packet size (bytes): 4096
    Clock Time (ms.) Total     : 3922   Average : (0.25 rows per sec.)
    

    Jótanács

    Ha fájlba menti a formátuminformációkat (bcp.fmt), a bcp segédprogram létrehoz egy formátumdefiníciót, amelyet a jövőben alkalmazhat a hasonló parancsokra anélkül, hogy grafikus fájlformátum-beállításokat kérnél. A formátumfájl használatához adja hozzá -f bcp.fmt bármelyik parancssor végéhez a jelszó argumentuma után.

  4. A kimeneti fájl ugyanabban a könyvtárban lesz létrehozva, ahol a PowerShell-parancsot futtatta. A diagram megtekintéséhez egyszerűen nyissa meg a fájlt plot.jpg.

    taxis utazások tippekkel és anélkül

Tárolt eljárás létrehozása a következő használatával: hist

Az adattudósok általában több adatvizualizációt hoznak létre, hogy különböző perspektívákból szerezzenek betekintést az adatokba. Ebben a példában létrehoz egy RPlotHist nevű tárolt eljárást, amely hisztogramokat, pontdiagramokat és más R-ábrákat ír .JPG és .PDF formátumba.

Ez a tárolt eljárás a hist függvény használatával hozza létre a hisztogramot, és exportálja a bináris adatokat népszerű formátumokba, például .JPG, .PDF és .PNG.

  1. Az SQL Server Management Studióban az Object Explorerben kattintson a jobb gombbal a NYCTaxi_Sample adatbázisra, és válassza az Új lekérdezés lehetőséget.

  2. Illessze be a következő szkriptet a hisztogramot ábrázoló tárolt eljárás létrehozásához. Ez a példa neve RPlotHist .

    CREATE PROCEDURE [dbo].[RPlotHist]  
    AS  
    BEGIN  
      SET NOCOUNT ON;  
      DECLARE @query nvarchar(max) =  
      N'SELECT cast(tipped as int) as tipped, tip_amount, fare_amount FROM [dbo].[nyctaxi_sample]'  
      EXECUTE sp_execute_external_script @language = N'R',  
      @script = N'  
       # Set output directory for files and check for existing files with same names   
        mainDir <- ''C:\\temp\\plots''  
        dir.create(mainDir, recursive = TRUE, showWarnings = FALSE)  
        setwd(mainDir);  
        print("Creating output plot files:", quote=FALSE)
    
        # Open a jpeg file and output histogram of tipped variable in that file.  
        dest_filename = tempfile(pattern = ''rHistogram_Tipped_'', tmpdir = mainDir)  
        dest_filename = paste(dest_filename, ''.jpg'',sep="")  
        print(dest_filename, quote=FALSE);  
        jpeg(filename=dest_filename);  
        hist(InputDataSet$tipped, col = ''lightgreen'', xlab=''Tipped'',   
            ylab = ''Counts'', main = ''Histogram, Tipped'');  
         dev.off();  
    
        # Open a pdf file and output histograms of tip amount and fare amount.   
        # Outputs two plots in one row  
        dest_filename = tempfile(pattern = ''rHistograms_Tip_and_Fare_Amount_'', tmpdir = mainDir)  
        dest_filename = paste(dest_filename, ''.pdf'',sep="")  
        print(dest_filename, quote=FALSE);  
        pdf(file=dest_filename, height=4, width=7);  
        par(mfrow=c(1,2));  
        hist(InputDataSet$tip_amount, col = ''lightgreen'',   
            xlab=''Tip amount ($)'',   
            ylab = ''Counts'',   
            main = ''Histogram, Tip amount'', xlim = c(0,40), 100);  
        hist(InputDataSet$fare_amount, col = ''lightgreen'',   
            xlab=''Fare amount ($)'',   
            ylab = ''Counts'',   
            main = ''Histogram,   
            Fare amount'',   
            xlim = c(0,100), 100);  
        dev.off();  
    
        # Open a pdf file and output an xyplot of tip amount vs. fare amount using lattice;  
        # Only 10,000 sampled observations are plotted here, otherwise file is large.  
        dest_filename = tempfile(pattern = ''rXYPlots_Tip_vs_Fare_Amount_'', tmpdir = mainDir)  
        dest_filename = paste(dest_filename, ''.pdf'',sep="")  
        print(dest_filename, quote=FALSE);  
        pdf(file=dest_filename, height=4, width=4);  
        plot(tip_amount ~ fare_amount,   
            data = InputDataSet[sample(nrow(InputDataSet), 10000), ],   
            ylim = c(0,50),   
            xlim = c(0,150),   
            cex=.5,   
            pch=19,   
            col=''darkgreen'',    
            main = ''Tip amount by Fare amount'',   
            xlab=''Fare Amount ($)'',   
            ylab = ''Tip Amount ($)'');   
        dev.off();',  
      @input_data_1 = @query  
    END
    

Ebben a szkriptben az alábbiakat kell megérteni:

  • A SELECT lekérdezés kimenete a tárolt eljáráson belül az alapértelmezett R-adatkeretben van tárolva. InputDataSet Ezután különböző R-ábrázolási függvények hívhatók meg a tényleges grafikus fájlok létrehozásához. A beágyazott R-szkriptek többsége ezeknek a grafikus függvényeknek az opcióit képviseli, mint például plot vagy hist.

  • Az R-eszköz ki van kapcsolva , mert ezt a parancsot külső szkriptként futtatja az SQL Serveren. Általában az R-ben, amikor magas szintű ábrázolási parancsot ad ki, az R megnyit egy grafikus ablakot, amelyet eszköznek hívnak. Kikapcsolhatja az eszközt, ha fájlba ír, vagy más módon kezeli a kimenetet.

  • Minden fájl a C:\temp\Plots helyi mappába lesz mentve. A célmappát az R-szkriptnek a tárolt eljárás részeként megadott argumentumok határozzák meg. Ha a fájlokat egy másik mappába szeretné kiállítani, módosítsa a mainDir változó értékét a tárolt eljárásba beágyazott R-szkriptben. Ön a szkriptet úgy is módosíthatja, hogy különböző formátumokat, több fájlt és így tovább állítson elő.

A tárolt eljárás végrehajtása

Futtassa az alábbi utasítást a bináris diagramadatok JPEG- és PDF-fájlformátumokba való exportálásához.

EXEC RPlotHist

Results

STDOUT message(s) from external script:
[1] Creating output plot files:[1] C:\temp\plots\rHistogram_Tipped_18887f6265d4.jpg[1] 

C:\temp\plots\rHistograms_Tip_and_Fare_Amount_1888441e542c.pdf[1]

C:\temp\plots\rXYPlots_Tip_vs_Fare_Amount_18887c9d517b.pdf

A rendszer véletlenszerűen generálja a fájlnevekben szereplő számokat, hogy ne legyen hiba, amikor egy meglévő fájlba próbál írni.

Kimenet megtekintése

A diagram megtekintéséhez nyissa meg a célmappát, és tekintse át az R-kód által a tárolt eljárásban létrehozott fájlokat.

  1. Nyissa meg az STDOUT üzenetben jelzett mappát (a példában ez a C:\temp\plots)

  2. Megnyitva rHistogram_Tipped.jpg megjelenítheti a tippet kapott utak számát, illetve azokat az utakat, amelyek nem kaptak tippet (ez a hisztogram hasonló az előző lépésben létrehozotthoz).

  3. Nyissa meg rHistograms_Tip_and_Fare_Amount.pdf a tippösszegek eloszlásának megtekintéséhez, a viteldíjösszegekkel szemben ábrázolva.

    hisztogram, amely a tip_amount és a fare_amount értékeket mutatja

  4. Nyissa meg rXYPlots_Tip_vs_Fare_Amount.pdf, hogy megtekintsen egy szóráspontdiagramot, amelyen az x-tengelyen a viteldíj összege, az y-tengelyen pedig a borravaló összege látható.

    a borravaló összege a viteldíj összegéhez viszonyítva ábrázolva

Következő lépések

Ebben a cikkben a következőt találja:

  • A mintaadatok áttekintése
  • R használatával létrehozott diagramok a T-SQL-ben
  • Kimeneti diagramok több fájlformátumban