Merge branch 'master' of https://github.com/Azure/Azure-MachineLearning-ClientLibrary-R
This commit is contained in:
Коммит
d591ac4d90
48
demo/demo.R
48
demo/demo.R
|
@ -3,9 +3,16 @@
|
|||
#####################################################################################################
|
||||
|
||||
# IMPORTANT: need to compile all of consume, discover, publish functions before running this demo
|
||||
setwd("C://Users/t-ritra/Documents/GitHub/Azure-MachineLearning-ClientLibrary-R/demo")
|
||||
setwd("C://Users/t-ritra/Github/Documents/Azure-MachineLearning-ClientLibrary-R/demo")
|
||||
setwd("C://Users/t-alewa/Documents/Azure-MachineLearning-ClientLibrary-R/demo")
|
||||
|
||||
# test server
|
||||
myID = "bbc91d900c3546b695d6507867fc72ae"
|
||||
myAuth = "ffc4b8d52c494e9eb42726b77112be88"
|
||||
|
||||
# internal server
|
||||
myID = "3612640f27234eb7b2b91ac62e8b4a40"
|
||||
myAuth = "abcbe14a958a40978f93aa0e0e71f5be"
|
||||
test <- read.csv(file="test.csv")
|
||||
train <- read.csv(file="train.csv")
|
||||
|
||||
|
@ -74,27 +81,34 @@ predictTitanic(1, "male", "20", "2", "0", "8.50")
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
# Publish the function
|
||||
TitanicService <- publishWebService("predictTitanic", "TitanicDemo7-8", list("Pclass"="string", "Sex"="string", "Age"="int", "SibSp"="int", "Parch"="int", "Fare"="float"), list("survProb"="float"), myID, myAuth)
|
||||
TitanicService <- publishWebService("predictTitanic", "TitanicDemo7-9", list("Pclass"="string", "Sex"="string", "Age"="int", "SibSp"="int", "Parch"="int", "Fare"="float"), list("survProb"="float"), myID, myAuth)
|
||||
|
||||
# Currently response is a list of three things:
|
||||
# new web service details, default endpoint details, specific consumption function
|
||||
# Rename the consumption function
|
||||
consumeTitanic <- TitanicService[[3]]
|
||||
# Go to https://metaanalytics001.cloudapp.net/Home/ViewWorkspace/bbc91d900c3546b695d6507867fc72ae?#Workspace/WebServiceGroups/listWebServiceGroups
|
||||
# to see published function
|
||||
TitanicService <- publishWebService("predictTitanic", "TitanicDemo7-10", list("Pclass"="string", "Sex"="string", "Age"="int", "SibSp"="int", "Parch"="int", "Fare"="double"), list("survProb"="double"), myID, myAuth)
|
||||
# Currently response is a list of two things:
|
||||
# new web service details, default endpoint details (using discovery functions)
|
||||
|
||||
|
||||
|
||||
# Discover the endpoints
|
||||
# Go to help page
|
||||
endpoints <- getEndpoints(myID, myAuth, TitanicService[[1]]["Id"], internalURL)
|
||||
# Alternatively,
|
||||
endpoints <- TitanicService[[2]]
|
||||
|
||||
# Use the new function, consumeList curried with the new web service details
|
||||
# Slow initially as it makes the connection, but subsequent calls are faster
|
||||
# as connection is left open
|
||||
response <- consumeTitanic(list("1", "male", "20", "1", "0", "8.50"), list("1", "female", "20", "1", "0", "8.50"))
|
||||
|
||||
# data frame consumption
|
||||
|
||||
# Consume the new webservice
|
||||
# First, consume with inputs as a list
|
||||
# Slow initially as it makes the connection
|
||||
response <- consumeLists(endpoints[[1]]["PrimaryKey"], paste(endpoints[[1]]["ApiLocation"], "/execute?api-version=2.0&details=true",sep=""), list("Pclass", "Sex", "Age", "SibSp", "Parch", "Fare"), list("1", "male", "20", "1", "0", "8.50"), list("1", "female", "20", "1", "0", "8.50"))
|
||||
# Subsequent calls are faster as connection is left open
|
||||
response2 <- consumeLists(endpoints[[1]]["PrimaryKey"], paste(endpoints[[1]]["ApiLocation"], "/execute?api-version=2.0&details=true",sep=""), list("Pclass", "Sex", "Age", "SibSp", "Parch", "Fare"), list("2", "male", "50", "1", "0", "8.50"), list("2", "female", "50", "1", "0", "8.50"))
|
||||
|
||||
# consume with inputs as dataframe
|
||||
# creating test data.frame
|
||||
demoDF <- data.frame("Pclass"=c(1,2,3), "Sex"=c("male","female","male"), "Age"=c("8","20", "50"), "Parch"=c(1,2,3), "SibSp"=c(1,2,3), "Fare"=c(10,7.5, 6))
|
||||
responseDF <- consumeDataframe(TitanicService[[2]][[1]]$PrimaryKey, paste(TitanicService[[2]][[1]]$ApiLocation,"/execute?api-version=2.0&details=true",sep=""), demoDF)
|
||||
demoDF <- data.frame("Pclass"=c(1,2,3), "Sex"=c("male","female","male"), "Age"=c("8","20", "50"), "Parch"=c(1,2,3), "SibSp"=c(1,1,1), "Fare"=c(10,7.5, 6))
|
||||
responseDF <- consumeDataframe(TitanicService[[2]][[1]]$PrimaryKey, paste(TitanicService[[2]][[1]]$ApiLocation,"/execute?api-version=2.0&details=true",sep=""), demoDF)
|
||||
|
||||
|
||||
# Questions, comments, concerns?
|
|
@ -153,27 +153,19 @@ consumeDataframe <- function(api_key, requestURL, valuesDF, globalParam="", batc
|
|||
resultStored <- jsonlite::fromJSON(temp)
|
||||
resultList = resultStored$Results$output1$value$Values
|
||||
resultDF <- data.frame(resultList[,(ncol(resultList))])
|
||||
print(resultDF)
|
||||
print(is.data.frame(resultDF))
|
||||
if(length(df) != 0 && length(resultDF) != 0) {
|
||||
names(df) <- names(resultDF)
|
||||
}
|
||||
df <- rbind(df,resultDF)
|
||||
colnames(df) <- "Scored probabilities"
|
||||
|
||||
print("passed")
|
||||
colnames(df) <- resultStored$Results$output1$value$ColumnNames
|
||||
print(sprintf("%i %s %i %s", i,"out of",length(values),"processed"))
|
||||
valuebatch = list()
|
||||
counter = 0
|
||||
}
|
||||
counter = counter + 1
|
||||
}
|
||||
colnames(df) <- "Scored probabilities"
|
||||
return(df)
|
||||
resultStored <- jsonlite::fromJSON(resultStored)
|
||||
resultDF <- data.frame(matrix(resultStored$Results$output1$value$Values))
|
||||
colnames(resultDF) <- resultStored$Results$output1$value$ColumnNames
|
||||
return(resultDF)
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -8,6 +8,7 @@ epURLdet = "https://management-tm.azureml.net/workspaces/%s/webservices/%s/endpo
|
|||
|
||||
# remove in real version
|
||||
testURL = "https://hiteshsm.cloudapp.net/workspaces/%s/webservices/%s/endpoints"
|
||||
internalURL = "https://management.azureml-int.net/workspaces/%s/webservices/%s/endpoints"
|
||||
|
||||
#############################################################
|
||||
# Framework for making an HTTP request to the URL specified
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
################################################################
|
||||
# String constants
|
||||
################################################################
|
||||
publishURL <- "https://hiteshsm.cloudapp.net/workspaces/%s/webservices/%s" ## REMOVE SSL IGNORING FOR REAL VERSION ##
|
||||
publishURL <- "https://management.azureml-int.net/workspaces/%s/webservices/%s" ## REMOVE SSL IGNORING FOR REAL VERSION ##
|
||||
#publishURL <- "https://hiteshsm.cloudapp.net/workspaces/%s/webservices/%s" ## REMOVE SSL IGNORING FOR REAL VERSION ##
|
||||
wrapper <- "inputDF <- maml.mapInputPort(1)\r\noutputDF <- matrix(ncol = %s, nrow = nrow(inputDF))\r\ncolnames(outputDF) <- list(%s)\r\noutputDF <- data.frame(outputDF)\r\nfor (file in list.files(\"src\")) {\r\n if (file == \"%s\") {\r\n load(\"src/%s\")\r\n for (item in names(dependencies)) {\r\n assign(item, dependencies[[item]])\r\n }\r\n }\r\n else {\r\n if (!(file %%in%% installed.packages()[,\"Package\"])) {\r\n install.packages(paste(\"src\", file, sep=\"/\"), lib=\".\", repos=NULL, verbose=TRUE)\r\n }\r\n library(strsplit(file, \"\\\\.\")[[1]][[1]], character.only=TRUE)\r\n }\r\n}\r\naction <- %s\r\n for (i in 1:nrow(inputDF)) {\r\n outputDF[i,] <- do.call(\"action\", as.list(inputDF[i,]))\r\n }\r\nmaml.mapOutputPort(\"outputDF\")"
|
||||
|
||||
|
||||
|
@ -394,12 +395,12 @@ publishWebService <- function(functionName, serviceName, inputSchema, outputSche
|
|||
|
||||
# Use discovery functions to get default endpoint for immediate use
|
||||
# switch to getEndpoints() later
|
||||
defaultEP <- getEndpoints(wkID, authToken, newService["Id"], testURL)
|
||||
defaultEP <- getEndpoints(wkID, authToken, newService["Id"], internalURL)
|
||||
|
||||
# Curry relevant parameters to consumption function
|
||||
consumption <- functional::Curry(consumeLists, "api_key"=defaultEP[[1]]["PrimaryKey"], "requestURL"=paste(defaultEP[[1]]["ApiLocation"],"/execute?api-version=2.0&details=true",sep=""), "columnNames"=as.list(names(inputSchema)))
|
||||
#consumption <- functional::Curry(consumeLists, "api_key"=defaultEP[[1]]["PrimaryKey"], "requestURL"=paste(defaultEP[[1]]["ApiLocation"],"/execute?api-version=2.0&details=true",sep=""), "columnNames"=as.list(names(inputSchema)))
|
||||
|
||||
# currently returning list of webservice details, default endpoint details, consumption function, in that order
|
||||
return(list(newService, defaultEP, consumption))
|
||||
return(list(newService, defaultEP))#, consumption))
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче