Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för: SQL Server 2016 (13.x) och senare versioner
Detta är handledning 8 i RevoScaleR-handledningsserien om hur man använder RevoScaleR-funktioner med SQL Server.
I denna handledning kommer du att använda den logistiska regressionsmodellen som du skapade i föregående handledning för att poängsätta en annan datamängd som använder samma oberoende variabler som indata.
- Poängsätt nya data
- Skapa ett histogram över partituren
Anmärkning
Du behöver DDL-administratörsrättigheter för några av dessa steg.
Generera och spara poäng
Uppdatera sqlScoreDS-datakällan (skapad i handledning två) för att använda kolumninformation som skapades i föregående handledning.
sqlScoreDS <- RxSqlServerData( connectionString = sqlConnString, table = sqlScoreTable, colInfo = ccColInfo, rowsPerRead = sqlRowsPerRead)För att säkerställa att du inte förlorar resultaten, skapa ett nytt datakällobjekt. Använd sedan det nya datakällobjektet för att fylla i en ny tabell i RevoDeepDive-databasen.
sqlServerOutDS <- RxSqlServerData(table = "ccScoreOutput", connectionString = sqlConnString, rowsPerRead = sqlRowsPerRead )Vid denna tidpunkt har tabellen ännu inte skapats. Detta uttryck definierar bara en behållare för datan.
Kontrollera den aktuella beräkningskontexten med rxGetComputeContext() och sätt beräkningskontexten till servern om det behövs.
rxSetComputeContext(sqlCompute)Som försiktighetsåtgärd, kontrollera att det finns en utdatatabell. Om en redan finns med samma namn får du ett felmeddelande när du försöker skriva den nya tabellen.
För att göra detta, gör ett anrop till funktionerna rxSqlServerTableExists och rxSqlServerDropTable, och skickar tabellnamnet som indata.
if (rxSqlServerTableExists("ccScoreOutput")) rxSqlServerDropTable("ccScoreOutput")- rxSqlServerTableExists frågar ODBC-drivrutinen och returnerar TRUE om tabellen finns, FALSE annars.
- rxSqlServerDropTable kör DDL och returnerar TRUE om tabellen tas bort, FALSE annars.
Kör rxPredict för att skapa poängen och spara dem i den nya tabellen definierad i datakällan sqlScoreDS.
rxPredict(modelObject = logitObj, data = sqlScoreDS, outData = sqlServerOutDS, predVarNames = "ccFraudLogitScore", type = "link", writeModelVars = TRUE, overwrite = TRUE)Funktionen rxPredict är en annan funktion som stödjer körning i fjärrberäkningssammanhang. Du kan använda funktionen rxPredict för att skapa poäng från modeller baserade på rxLinMod, rxLogit eller rxGlm.
Parametern writeModelVars är satt till TRUE här. Detta innebär att de variabler som användes för skattning kommer att inkluderas i den nya tabellen.
Parametern predVarNames specificerar variabeln där resultaten ska lagras. Här skickar du en ny variabel,
ccFraudLogitScore.Typparametern för rxPredict definierar hur du vill att förutsägelserna ska beräknas. Ange nyckelordssvaret för att generera poäng baserat på svarsvariabelns skala. Eller använd nyckelordslänken för att generera poäng baserat på den underliggande länkfunktionen, i vilket fall prediktioner skapas med hjälp av en logistisk skala.
Efter ett tag kan du uppdatera listan över tabeller i Management Studio för att se den nya tabellen och dess data.
För att lägga till ytterligare variabler till utdataprediktionerna, använd argumentet extraVarsToWrite . Till exempel, i följande kod läggs variabeln custID från poängdatatabellen till utdatatabellen med förutsägelser.
rxPredict(modelObject = logitObj, data = sqlScoreDS, outData = sqlServerOutDS, predVarNames = "ccFraudLogitScore", type = "link", writeModelVars = TRUE, extraVarsToWrite = "custID", overwrite = TRUE)
Visa poäng i ett histogram
Efter att den nya tabellen har skapats, beräkna och visa ett histogram av de 10 000 förutsagda poängen. Beräkningarna går snabbare om du anger låga och höga värden, så hämta dem från databasen och lägg till dem i din arbetsdata.
Skapa en ny datakälla, sqlMinMax, som frågar databasen för att få fram låga och höga värden.
sqlMinMax <- RxSqlServerData( sqlQuery = paste("SELECT MIN(ccFraudLogitScore) AS minVal,", "MAX(ccFraudLogitScore) AS maxVal FROM ccScoreOutput"), connectionString = sqlConnString)Från detta exempel kan du se hur enkelt det är att använda RxSqlServerData-datakällobjekten för att definiera godtyckliga dataset baserade på SQL-frågor, funktioner eller lagrade procedurer, och sedan använda dessa i din R-kod. Variabeln lagrar inte de faktiska värdena, bara definitionen av datakällan; Frågan körs för att generera värdena endast när du använder den i en funktion som rxImport.
Anropa funktionen rxImport för att placera värdena i en dataram som kan delas mellan beräkningskontexter.
minMaxVals <- rxImport(sqlMinMax) minMaxVals <- as.vector(unlist(minMaxVals))Results
> minMaxVals [1] -23.970256 9.786345Nu när maximum- och minimivärdena är tillgängliga, använd värdena för att skapa en annan datakälla för de genererade poängen.
sqlOutScoreDS <- RxSqlServerData(sqlQuery = "SELECT ccFraudLogitScore FROM ccScoreOutput", connectionString = sqlConnString, rowsPerRead = sqlRowsPerRead, colInfo = list(ccFraudLogitScore = list( low = floor(minMaxVals[1]), high = ceiling(minMaxVals[2]) ) ) )Använd datakällobjektet sqlOutScoreDS för att hämta poängen, och beräkna samt visa ett histogram. Lägg till koden för att sätta beräkningskontexten om det behövs.
# rxSetComputeContext(sqlCompute) rxHistogram(~ccFraudLogitScore, data = sqlOutScoreDS)Results