Статьи

Машинное обучение на Java, часть 2

Добро пожаловать во вторую часть руководства по оценке ваших файлов 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 url = "http://localhost:8080/model/";
        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, являются их собственными.