Запрос POST для оценки с использованием облачной модели

Я использую IBM Bluemix и новую службу SPSS Predictive Modeling. Я хочу получить некоторые данные, используя модель, которую я развернул в облаке. В документации у меня есть следующий пример запроса:

 Content-Type: application/json;charset=UTF-8
    Parameters:
        Path parameters:
            contextId: the identifier of the deployed model to be used to process this score request
        Query Parameters:
            accesskey: access_key from env.VCAP_SERVICES
        Body: the input data, json string, eg.
            {
                "tablename":"DRUG1n.sav", 
                "header":["Age", "Sex", "BP", "Cholesterol", "Na", "K", "Drug"], 
                "data":[[43.0, "M", "LOW", "NORMAL", 0.526102, 0.027164, "drugY"]]
            }  

Я хочу выполнить запрос, используя R и пакет httr. Я написал следующий код:

library(httr)
#Score using a deployed predictive model
host = "https://ibmpmsrvus1.pmservice.ibmcloud.com:8443/pm/v1/score/"
access_key = "vvZ0DIc1d/oAzguseZS/cDf98us5bgi41pau9YEOtu81pRuVE1E2ND6v469pmmerEC2a6an71wxIdhb3gIZ5P7jnBaXJcLpJ+Ta+djR1Uu20nSZ+Rw9rXoOuXOuFsYgUnnipl9lQKr1S2ukXJrA2wA=="
contextId="drug"
url <- paste(host,contextId,"?accesskey=",access_key, sep = "")
data<-toJSON(list("tablename"= unbox("scoreInput"),
              "header" = c("Age", "Sex", "BP", "Cholesterol", "Na", "K","Drug"),
              "data" = c(unbox(43.0),"M","LOW","NORMAL",0.526102,0.027164,"drugY")

)) r ‹-POST (url, body = data, encode = 'json') r

JSON, созданный с использованием toJSON, немного отличается:

{"tablename":"scoreInput","header":["Age","Sex","BP","Cholesterol","Na","K","Drug"],
"data":["43","M","LOW","NORMAL","0.526102","0.027164","drugY"]} 

без [[ в начале данных, и поэтому он не работает. Как я могу добавить этот двойной [?

Любая помощь будет оценена по достоинству!


person aruizga    schedule 18.03.2015    source источник


Ответы (1)


Попробуйте добавить такой тип контента:

r<-POST(url,body = data, content_type_json())
person cory    schedule 18.03.2015
comment
Переустановите пакет httr. Может у тебя есть постарше? - person cory; 18.03.2015
comment
Вы правы, на моем компьютере установлено несколько версий R, и у меня был RStudio, работающий с R2.15.1 .... теперь он принимает запрос, но все еще что-то не так, я получаю status 500, что означает, что сервер обнаружил непредвиденное состояние что помешало ему выполнить запрос. - person aruizga; 19.03.2015
comment
Возможно, также посмотрите на замену всех ваших двойных кавычек на одно слово и наоборот в данных. Нужно ли tablename расширение файла? - person cory; 19.03.2015
comment
Я решил, что JSON, который я отправлял в теле, был неправильным, я должен был поставить double [ Использование Matrix было решено: data<-toJSON(list("tablename"= unbox("scoreInput"), "header" = c("Age", "Sex", "BP", "Cholesterol", "Na", "K","Drug"), "data" = matrix(c(unbox(43.0),"M","LOW","NORMAL",0.526102,0.027164,"drugY"), nrow = 1, ncol = 7) )) - person aruizga; 19.03.2015