Добро пожаловать во вторую часть руководства по оценке ваших файлов PMML с помощью LightningScorer , который является моим сторонним проектом.
Давайте выясним, как работают дополнительные параметры.
Начальные шаги аналогичны первой части урока.
Сначала получите локальную копию
|
1
|
git clone https://github.com/sezinkarli/lightningscorer.git |
и построить его с Maven
|
1
|
mvn clean install |
и запустите его, перейдя в целевую папку
|
1
|
java -jar lightningscorer-uberjar-1.0.jar |
Теперь давайте удостоверимся, что наш сервер запущен и работает, перейдя в
|
1
|
http://localhost:8080/ |
,
Сервер возвращается
|
1
2
3
4
|
{"data": "I have come here to chew bubblegum and kick ass...","success": true} |
Хорошо, теперь мы готовы надрать задницу снова.
Я буду использовать методы http / post для Apache Commons. Сначала мы развернем нашу модель машинного обучения с дополнительным параметром. Затем мы проверим, работает ли он, а затем используем наши входные значения и оценим его. После подсчета очков мы будем использовать наш дополнительный параметр.
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
final String modelId = "test2"; File pmmlFile = new File("/tmp/ElNinoPolReg.xml"); CloseableHttpClient client = HttpClients.createDefault(); // deployment // notice that I give a variance value as an additional parameter that I will use later HttpPost deployPost = new HttpPost(url + modelId + "?variance=3.25"); MultipartEntityBuilder builder = MultipartEntityBuilder.create(); builder.addBinaryBody("model", new File(pmmlFile.getAbsolutePath()), ContentType.APPLICATION_OCTET_STREAM, "model"); HttpEntity multipart = builder.build(); deployPost.setEntity(multipart); CloseableHttpResponse response = client.execute(deployPost); String deployResponse = IOUtils.toString(response.getEntity().getContent(), Charset.forName("UTF-8")); System.out.println(deployResponse); // {"data":true,"success":true} deployPost.releaseConnection(); // check deployed model HttpGet httpGet = new HttpGet(url + "ids"); response = client.execute(httpGet); String getAllModelsResponse = IOUtils.toString(response.getEntity().getContent(), Charset.forName("UTF-8")); System.out.println(getAllModelsResponse); // {"data":["test1"],"success":true} httpGet.releaseConnection(); //score deployed model HttpPost scorePost = new HttpPost(url + modelId + "/score"); StringEntity params = new StringEntity("{" + "\"fields\":" + "{\"latitude\":2.5," + "\"longitude\":11.4," + "\"zon_winds\":3.5," + "\"mer_winds\":3," + "\"humidity\":31.2," + "\"s_s_temp\":25.21" + "}" + "} "); scorePost.addHeader("content-type", "application/json"); scorePost.setEntity(params); CloseableHttpResponse response2 = client.execute(scorePost); String scoreResponse = IOUtils.toString(response2.getEntity().getContent(), Charset.forName("UTF-8")); System.out.println(scoreResponse); // {"data":{"result":{"airtemp":29.788226026392735}},"success":true} scorePost.releaseConnection(); HttpGet additionalParamGet = new HttpGet(url + modelId + "/additional"); CloseableHttpResponse response3 = client.execute(additionalParamGet); String additionalParamResponse = IOUtils.toString(response3.getEntity().getContent(), Charset.forName("UTF-8")); System.out.println(additionalParamResponse); // {"data":{"variance":"3.25"},"success":true} additionalParamGet.releaseConnection(); // Then you can use the variance value with your result in airtemp to calculate an interval for your score client.close(); |
| Опубликовано на Java Code Geeks с разрешения Сезина Карли, партнера нашей программы JCG . Смотрите оригинальную статью здесь: машинное обучение задницей в Java, часть 2
Мнения, высказанные участниками Java Code Geeks, являются их собственными. |