Отправка массовых данных на конечную точку Azure ML - PullRequest
2 голосов
/ 13 января 2020

У меня есть конечная точка Azure ML, которая используется для получения баллов при предоставлении данных в json.

import requests
import json

# URL for the web service
scoring_uri = 'http://107a119d-9c23-4792-b5db-065e9d3af1e6.eastus.azurecontainer.io/score'  

# If the service is authenticated, set the key or token
key = '##########################'


data = {"data":
           [{'Associate_Gender': 'Male', 'Associate_Age': 20, 'Education': 'Under Graduate', 'Source_Hiring': 'Internal Movement', 'Count_of_Incoming_Calls_6_month': None, 'Count_of_Incoming_Calls_6_month_bucket': 'Greater than equal to 0 and less than 4', 'Internal_Quality_IQ_Score_Last_6_Months': '93%', 'Internal_Quality_IQ_Score_Last_6_Months_Bucket': 'Greater than 75%', 'Associate_Tenure_Floor_Bucket': 'Greater than 0 and less than 90', 'Current_Call_Repeat_Yes_No': False, 'Historical_CSAT_score': 'Greater than equal to 7 and less than 9', 'Customer_Age': 54, 'Customer_Age_Bucket': 'Greater than equal to 46', 'Network_Region_Originating_Call': 'East London', 'Length_of_Relationship_with_Customer': 266, 'Length_of_Relationship_with_Customer_bucket': 'Greater than 90', 'Call_Reason_Type_L1': 'Voice', 'Call_Reason_Type_L2': 'Prepaid', 'Call_Reason_Type_L3': 'Request for Reversal Provisioning', 'Number_of_VAS_services_active': 6, 'Customer_Category': 'Mercury', 'Customer_monthly_ARPU_GBP_Bucket': 'More than 30', 'Customer_Location': 'Houslow'}]
                        }
# Convert to JSON string
input_data = json.dumps(data)

# Set the content type
headers = {'Content-Type': 'application/json'}
# If authentication is enabled, set the authorization header
headers['Authorization'] = f'Bearer {key}'

# Make the request and display the response
resp = requests.post(scoring_uri, input_data, headers=headers)
print(resp.text)  

Как массово отправлять входные данные из файлов и получать выходные данные. Или не представляется возможным отправить огромное количество данных для оценки на конечных точках?
Любое альтернативное предложение для оценки на azure также приветствуется.

1 Ответ

0 голосов
/ 19 января 2020

Предположим, у вас есть папка с именем json_data, в которой хранятся все ваши файлы json, затем вы откроете эти файлы и отправите их на конечную точку следующим образом:

import requests
import json
import os
import glob

your_uri = 'https://jsonplaceholder.typicode.com/'
folder_path = './json_data'

for filename in glob.glob(os.path.join(folder_path, '*.json')):
    with open(filename, 'r') as f:
        json_input_data = json.load(f)
        resp = requests.post(your_uri, json_input_data)
        print(resp)

Для демонстрации Для успешного ответа HTTP 201 с jsonplaceholder.typicode.com необходимо создать папку в том же каталоге, что и файл python, и присвоить ему имя json_data, затем создать несколько файлов json внутри папки и вставить некоторые данные в файлы. Например:

file1. json:

{
  "title": "some title name 1",
  "body": "some body content 1"
} 

file2. json:

{
  "title": "some title name 2",
  "body": "some body content 2"
} 

et c.

Вы можете легко переписать его и использовать свой собственный URI, ключ, заголовки и т. Д. c.

...