Skip to content

Commit c774355

Browse files
committed
Add updated model content for H2O model example part 2.
1 parent 473edd9 commit c774355

File tree

4 files changed

+674
-0
lines changed

4 files changed

+674
-0
lines changed
Lines changed: 172 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,172 @@
1+
data sasep.out;
2+
dcl package pymas pm;
3+
dcl package logger logr('App.tk.MAS');
4+
dcl varchar(32767) character set utf8 pypgm;
5+
dcl double resultCode revision;
6+
dcl varchar(100) EM_CLASSIFICATION;
7+
dcl double EM_EVENTPROBABILITY;
8+
9+
10+
method score(double LOAN, double MORTDUE, double VALUE, varchar(100) REASON, varchar(100) JOB, double YOJ, double DEROG, double DELINQ, double CLAGE, double NINQ, double CLNO, double DEBTINC, in_out double resultCode, in_out varchar(100) EM_CLASSIFICATION, in_out double EM_EVENTPROBABILITY);
11+
resultCode = revision = 0;
12+
if null(pm) then do;
13+
pm = _new_ pymas();
14+
resultCode = pm.useModule('model_exec_1a74cbe6-406d-4a65-8169-f8a68c5a6935', 1);
15+
if resultCode then do;
16+
resultCode = pm.appendSrcLine('import math');
17+
resultCode = pm.appendSrcLine('import pickle');
18+
resultCode = pm.appendSrcLine('import pandas as pd');
19+
resultCode = pm.appendSrcLine('import numpy as np');
20+
resultCode = pm.appendSrcLine('from pathlib import Path');
21+
resultCode = pm.appendSrcLine('');
22+
resultCode = pm.appendSrcLine('import h2o');
23+
resultCode = pm.appendSrcLine('import gzip');
24+
resultCode = pm.appendSrcLine('import shutil');
25+
resultCode = pm.appendSrcLine('import os');
26+
resultCode = pm.appendSrcLine('');
27+
resultCode = pm.appendSrcLine('h2o.init()');
28+
resultCode = pm.appendSrcLine('');
29+
resultCode = pm.appendSrcLine('model = h2o.load(str(Path("/models/resources/viya/b3b0fcef-81d8-4da1-a78d-8284dbb590a8/glmfit.pickle")))');
30+
resultCode = pm.appendSrcLine('');
31+
resultCode = pm.appendSrcLine('def score(LOAN, MORTDUE, VALUE, REASON, JOB, YOJ, DEROG, DELINQ, CLAGE, NINQ, CLNO, DEBTINC):');
32+
resultCode = pm.appendSrcLine(' "Output: EM_CLASSIFICATION, EM_EVENTPROBABILITY"');
33+
resultCode = pm.appendSrcLine('');
34+
resultCode = pm.appendSrcLine(' try:');
35+
resultCode = pm.appendSrcLine(' global model');
36+
resultCode = pm.appendSrcLine(' except NameError:');
37+
resultCode = pm.appendSrcLine(' model = h2o.load(str(Path("/models/resources/viya/b3b0fcef-81d8-4da1-a78d-8284dbb590a8/glmfit.pickle")))');
38+
resultCode = pm.appendSrcLine('');
39+
resultCode = pm.appendSrcLine(' try:');
40+
resultCode = pm.appendSrcLine(' if math.isnan(LOAN):');
41+
resultCode = pm.appendSrcLine(' LOAN = 18724.518290980173');
42+
resultCode = pm.appendSrcLine(' except TypeError:');
43+
resultCode = pm.appendSrcLine(' LOAN = 18724.518290980173');
44+
resultCode = pm.appendSrcLine(' try:');
45+
resultCode = pm.appendSrcLine(' if math.isnan(MORTDUE):');
46+
resultCode = pm.appendSrcLine(' MORTDUE = 73578.70182374542');
47+
resultCode = pm.appendSrcLine(' except TypeError:');
48+
resultCode = pm.appendSrcLine(' MORTDUE = 73578.70182374542');
49+
resultCode = pm.appendSrcLine(' try:');
50+
resultCode = pm.appendSrcLine(' if math.isnan(VALUE):');
51+
resultCode = pm.appendSrcLine(' VALUE = 102073.94160831199');
52+
resultCode = pm.appendSrcLine(' except TypeError:');
53+
resultCode = pm.appendSrcLine(' VALUE = 102073.94160831199');
54+
resultCode = pm.appendSrcLine(' try:');
55+
resultCode = pm.appendSrcLine(' REASON = REASON.strip()');
56+
resultCode = pm.appendSrcLine(' except AttributeError:');
57+
resultCode = pm.appendSrcLine(' REASON = ""');
58+
resultCode = pm.appendSrcLine(' try:');
59+
resultCode = pm.appendSrcLine(' JOB = JOB.strip()');
60+
resultCode = pm.appendSrcLine(' except AttributeError:');
61+
resultCode = pm.appendSrcLine(' JOB = ""');
62+
resultCode = pm.appendSrcLine(' try:');
63+
resultCode = pm.appendSrcLine(' if math.isnan(YOJ):');
64+
resultCode = pm.appendSrcLine(' YOJ = 8.878919914084074');
65+
resultCode = pm.appendSrcLine(' except TypeError:');
66+
resultCode = pm.appendSrcLine(' YOJ = 8.878919914084074');
67+
resultCode = pm.appendSrcLine(' try:');
68+
resultCode = pm.appendSrcLine(' if math.isnan(DEROG):');
69+
resultCode = pm.appendSrcLine(' DEROG = 0.2522264631043257');
70+
resultCode = pm.appendSrcLine(' except TypeError:');
71+
resultCode = pm.appendSrcLine(' DEROG = 0.2522264631043257');
72+
resultCode = pm.appendSrcLine(' try:');
73+
resultCode = pm.appendSrcLine(' if math.isnan(DELINQ):');
74+
resultCode = pm.appendSrcLine(' DELINQ = 0.4452373565001551');
75+
resultCode = pm.appendSrcLine(' except TypeError:');
76+
resultCode = pm.appendSrcLine(' DELINQ = 0.4452373565001551');
77+
resultCode = pm.appendSrcLine(' try:');
78+
resultCode = pm.appendSrcLine(' if math.isnan(CLAGE):');
79+
resultCode = pm.appendSrcLine(' CLAGE = 179.86044681046295');
80+
resultCode = pm.appendSrcLine(' except TypeError:');
81+
resultCode = pm.appendSrcLine(' CLAGE = 179.86044681046295');
82+
resultCode = pm.appendSrcLine(' try:');
83+
resultCode = pm.appendSrcLine(' if math.isnan(NINQ):');
84+
resultCode = pm.appendSrcLine(' NINQ = 1.1648318042813455');
85+
resultCode = pm.appendSrcLine(' except TypeError:');
86+
resultCode = pm.appendSrcLine(' NINQ = 1.1648318042813455');
87+
resultCode = pm.appendSrcLine(' try:');
88+
resultCode = pm.appendSrcLine(' if math.isnan(CLNO):');
89+
resultCode = pm.appendSrcLine(' CLNO = 21.205105889178995');
90+
resultCode = pm.appendSrcLine(' except TypeError:');
91+
resultCode = pm.appendSrcLine(' CLNO = 21.205105889178995');
92+
resultCode = pm.appendSrcLine(' try:');
93+
resultCode = pm.appendSrcLine(' if math.isnan(DEBTINC):');
94+
resultCode = pm.appendSrcLine(' DEBTINC = 33.64816965600249');
95+
resultCode = pm.appendSrcLine(' except TypeError:');
96+
resultCode = pm.appendSrcLine(' DEBTINC = 33.64816965600249');
97+
resultCode = pm.appendSrcLine('');
98+
resultCode = pm.appendSrcLine(' input_array = pd.DataFrame([[LOAN, MORTDUE, VALUE, REASON, JOB, YOJ, DEROG, DELINQ, CLAGE, NINQ, CLNO, DEBTINC]],');
99+
resultCode = pm.appendSrcLine(' columns=["LOAN", "MORTDUE", "VALUE", "REASON", "JOB", "YOJ", "DEROG", "DELINQ", "CLAGE", "NINQ", "CLNO", "DEBTINC"],');
100+
resultCode = pm.appendSrcLine(' dtype=float,');
101+
resultCode = pm.appendSrcLine(' index=[0])');
102+
resultCode = pm.appendSrcLine(' column_types = {"LOAN" : "numeric", "MORTDUE" : "numeric", "VALUE" : "numeric", "REASON" : "string", "JOB" : "string", "YOJ" : "numeric", "DEROG" : "numeric", "DELINQ" : "numeric", "CLAGE" : "numeric", "NINQ" : "numeric", "CLNO" : "numeric", "DEBTINC" : "numeric"}');
103+
resultCode = pm.appendSrcLine(' h2o_array = h2o.H2OFrame(input_array, column_types=column_types)');
104+
resultCode = pm.appendSrcLine(' prediction = model.predict(h2o_array)');
105+
resultCode = pm.appendSrcLine(' prediction = h2o.as_list(prediction, use_pandas=False)');
106+
resultCode = pm.appendSrcLine(' EM_CLASSIFICATION = prediction[1][0]');
107+
resultCode = pm.appendSrcLine(' EM_EVENTPROBABILITY = float(prediction[1][1])');
108+
resultCode = pm.appendSrcLine('');
109+
resultCode = pm.appendSrcLine(' return EM_CLASSIFICATION, EM_EVENTPROBABILITY');
110+
revision = pm.publish(pm.getSource(), 'model_exec_1a74cbe6-406d-4a65-8169-f8a68c5a6935');
111+
112+
if ( revision < 1 ) then do;
113+
logr.log( 'e', 'py.publish() failed.');
114+
resultCode = -1;
115+
return;
116+
end;
117+
end;
118+
end;
119+
resultCode = pm.useMethod('score');
120+
if resultCode then do;
121+
logr.log('E', 'useMethod() failed. resultCode=$s', resultCode);
122+
return;
123+
end;
124+
resultCode = pm.setDouble('LOAN', LOAN);
125+
if resultCode then
126+
logr.log('E', 'useMethod() failed. resultCode=$s', resultCode);
127+
resultCode = pm.setDouble('MORTDUE', MORTDUE);
128+
if resultCode then
129+
logr.log('E', 'useMethod() failed. resultCode=$s', resultCode);
130+
resultCode = pm.setDouble('VALUE', VALUE);
131+
if resultCode then
132+
logr.log('E', 'useMethod() failed. resultCode=$s', resultCode);
133+
resultCode = pm.setString('REASON', REASON);
134+
if resultCode then
135+
logr.log('E', 'useMethod() failed. resultCode=$s', resultCode);
136+
resultCode = pm.setString('JOB', JOB);
137+
if resultCode then
138+
logr.log('E', 'useMethod() failed. resultCode=$s', resultCode);
139+
resultCode = pm.setDouble('YOJ', YOJ);
140+
if resultCode then
141+
logr.log('E', 'useMethod() failed. resultCode=$s', resultCode);
142+
resultCode = pm.setDouble('DEROG', DEROG);
143+
if resultCode then
144+
logr.log('E', 'useMethod() failed. resultCode=$s', resultCode);
145+
resultCode = pm.setDouble('DELINQ', DELINQ);
146+
if resultCode then
147+
logr.log('E', 'useMethod() failed. resultCode=$s', resultCode);
148+
resultCode = pm.setDouble('CLAGE', CLAGE);
149+
if resultCode then
150+
logr.log('E', 'useMethod() failed. resultCode=$s', resultCode);
151+
resultCode = pm.setDouble('NINQ', NINQ);
152+
if resultCode then
153+
logr.log('E', 'useMethod() failed. resultCode=$s', resultCode);
154+
resultCode = pm.setDouble('CLNO', CLNO);
155+
if resultCode then
156+
logr.log('E', 'useMethod() failed. resultCode=$s', resultCode);
157+
resultCode = pm.setDouble('DEBTINC', DEBTINC);
158+
if resultCode then
159+
logr.log('E', 'useMethod() failed. resultCode=$s', resultCode);
160+
resultCode = pm.execute();
161+
if (resultCode) then put 'Error: pm.execute failed. resultCode=' resultCode;
162+
else do;
163+
EM_CLASSIFICATION = pm.getString('EM_CLASSIFICATION');
164+
EM_EVENTPROBABILITY = pm.getDouble('EM_EVENTPROBABILITY');
165+
end;
166+
end;
167+
168+
method run();
169+
set SASEP.IN;
170+
score(LOAN, MORTDUE, VALUE, REASON, JOB, YOJ, DEROG, DELINQ, CLAGE, NINQ, CLNO, DEBTINC, resultCode, EM_CLASSIFICATION, EM_EVENTPROBABILITY);
171+
end;
172+
enddata;

0 commit comments

Comments
 (0)