|
| 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 double EM_PREDICTION; |
| 7 | + |
| 8 | + |
| 9 | +method score(double Avg_Area_Income, double Avg_Area_House_Age, double Avg_Area_Number_of_Rooms, double Avg_Area_Number_of_Bedrooms, double Area_Population, in_out double resultCode, in_out double EM_PREDICTION, in_out double EM_PREDICTION); |
| 10 | + resultCode = revision = 0; |
| 11 | + if null(pm) then do; |
| 12 | + pm = _new_ pymas(); |
| 13 | + resultCode = pm.useModule('model_exec_5b58f10f-2fde-4de7-a36e-96618a770c71', 1); |
| 14 | + if resultCode then do; |
| 15 | + resultCode = pm.appendSrcLine(''); |
| 16 | + resultCode = pm.appendSrcLine(''); |
| 17 | + resultCode = pm.appendSrcLine('import math'); |
| 18 | + resultCode = pm.appendSrcLine('import pickle'); |
| 19 | + resultCode = pm.appendSrcLine('import pandas as pd'); |
| 20 | + resultCode = pm.appendSrcLine('import numpy as np'); |
| 21 | + resultCode = pm.appendSrcLine(''); |
| 22 | + resultCode = pm.appendSrcLine('with open("/models/resources/viya/cb485d04-6cb9-48ce-a829-67b8167303ce/LinearRegression.pickle", "rb") as _pFile:'); |
| 23 | + resultCode = pm.appendSrcLine(' _thisModelFit = pickle.load(_pFile)'); |
| 24 | + resultCode = pm.appendSrcLine(''); |
| 25 | + resultCode = pm.appendSrcLine('def scoreLinearRegression(Avg_Area_Income, Avg_Area_House_Age, Avg_Area_Number_of_Rooms, Avg_Area_Number_of_Bedrooms, Area_Population):'); |
| 26 | + resultCode = pm.appendSrcLine(' "Output: EM_PREDICTION, EM_PREDICTION"'); |
| 27 | + resultCode = pm.appendSrcLine(''); |
| 28 | + resultCode = pm.appendSrcLine(' try:'); |
| 29 | + resultCode = pm.appendSrcLine(' global _thisModelFit'); |
| 30 | + resultCode = pm.appendSrcLine(' except NameError:'); |
| 31 | + resultCode = pm.appendSrcLine(''); |
| 32 | + resultCode = pm.appendSrcLine(' with open("/models/resources/viya/cb485d04-6cb9-48ce-a829-67b8167303ce/LinearRegression.pickle", "rb") as _pFile:'); |
| 33 | + resultCode = pm.appendSrcLine(' _thisModelFit = pickle.load(_pFile)'); |
| 34 | + resultCode = pm.appendSrcLine(''); |
| 35 | + resultCode = pm.appendSrcLine(' try:'); |
| 36 | + resultCode = pm.appendSrcLine(' inputArray = pd.DataFrame([[Avg_Area_Income, Avg_Area_House_Age, Avg_Area_Number_of_Rooms, Avg_Area_Number_of_Bedrooms, Area_Population]],'); |
| 37 | + resultCode = pm.appendSrcLine(' columns=["Avg_Area_Income", "Avg_Area_House_Age", "Avg_Area_Number_of_Rooms", "Avg_Area_Number_of_Bedrooms", "Area_Population"],'); |
| 38 | + resultCode = pm.appendSrcLine(' dtype=float)'); |
| 39 | + resultCode = pm.appendSrcLine(' prediction = _thisModelFit.predict(inputArray)'); |
| 40 | + resultCode = pm.appendSrcLine(' except ValueError:'); |
| 41 | + resultCode = pm.appendSrcLine(' # For models requiring or including an intercept value, a "const" column is required'); |
| 42 | + resultCode = pm.appendSrcLine(' # For example, many statsmodels models include an intercept value that must be included for the model prediction'); |
| 43 | + resultCode = pm.appendSrcLine(' inputArray = pd.DataFrame([[1.0, Avg_Area_Income, Avg_Area_House_Age, Avg_Area_Number_of_Rooms, Avg_Area_Number_of_Bedrooms, Area_Population]],'); |
| 44 | + resultCode = pm.appendSrcLine(' columns=["const", "Avg_Area_Income", "Avg_Area_House_Age", "Avg_Area_Number_of_Rooms", "Avg_Area_Number_of_Bedrooms", "Area_Population"],'); |
| 45 | + resultCode = pm.appendSrcLine(' dtype=float)'); |
| 46 | + resultCode = pm.appendSrcLine(' prediction = _thisModelFit.predict(inputArray)'); |
| 47 | + resultCode = pm.appendSrcLine(''); |
| 48 | + resultCode = pm.appendSrcLine(' try:'); |
| 49 | + resultCode = pm.appendSrcLine(' EM_PREDICTION = float(prediction)'); |
| 50 | + resultCode = pm.appendSrcLine(' except TypeError:'); |
| 51 | + resultCode = pm.appendSrcLine(' # If the model expects non-binary responses, a TypeError will be raised.'); |
| 52 | + resultCode = pm.appendSrcLine(' # The except block shifts the prediction to accept a non-binary response.'); |
| 53 | + resultCode = pm.appendSrcLine(' EM_PREDICTION = float(prediction[:,1])'); |
| 54 | + resultCode = pm.appendSrcLine(''); |
| 55 | + resultCode = pm.appendSrcLine(' if (EM_PREDICTION >= 1232072.6541453):'); |
| 56 | + resultCode = pm.appendSrcLine(' EM_PREDICTION = "1"'); |
| 57 | + resultCode = pm.appendSrcLine(' else:'); |
| 58 | + resultCode = pm.appendSrcLine(' EM_PREDICTION = "0" '); |
| 59 | + resultCode = pm.appendSrcLine(''); |
| 60 | + resultCode = pm.appendSrcLine(' return(EM_PREDICTION, EM_PREDICTION)'); |
| 61 | + revision = pm.publish(pm.getSource(), 'model_exec_5b58f10f-2fde-4de7-a36e-96618a770c71'); |
| 62 | + |
| 63 | + if ( revision < 1 ) then do; |
| 64 | + logr.log( 'e', 'py.publish() failed.'); |
| 65 | + resultCode = -1; |
| 66 | + return; |
| 67 | + end; |
| 68 | + end; |
| 69 | + end; |
| 70 | + resultCode = pm.useMethod('scoreLinearRegression'); |
| 71 | + if resultCode then do; |
| 72 | + logr.log('E', 'useMethod() failed. resultCode=$s', resultCode); |
| 73 | + return; |
| 74 | + end; |
| 75 | + resultCode = pm.setDouble('Avg_Area_Income', Avg_Area_Income); |
| 76 | + if resultCode then |
| 77 | + logr.log('E', 'useMethod() failed. resultCode=$s', resultCode); |
| 78 | + resultCode = pm.setDouble('Avg_Area_House_Age', Avg_Area_House_Age); |
| 79 | + if resultCode then |
| 80 | + logr.log('E', 'useMethod() failed. resultCode=$s', resultCode); |
| 81 | + resultCode = pm.setDouble('Avg_Area_Number_of_Rooms', Avg_Area_Number_of_Rooms); |
| 82 | + if resultCode then |
| 83 | + logr.log('E', 'useMethod() failed. resultCode=$s', resultCode); |
| 84 | + resultCode = pm.setDouble('Avg_Area_Number_of_Bedrooms', Avg_Area_Number_of_Bedrooms); |
| 85 | + if resultCode then |
| 86 | + logr.log('E', 'useMethod() failed. resultCode=$s', resultCode); |
| 87 | + resultCode = pm.setDouble('Area_Population', Area_Population); |
| 88 | + if resultCode then |
| 89 | + logr.log('E', 'useMethod() failed. resultCode=$s', resultCode); |
| 90 | + resultCode = pm.execute(); |
| 91 | + if (resultCode) then put 'Error: pm.execute failed. resultCode=' resultCode; |
| 92 | + else do; |
| 93 | + EM_PREDICTION = pm.getDouble('EM_PREDICTION'); |
| 94 | + EM_PREDICTION = pm.getDouble('EM_PREDICTION'); |
| 95 | + end; |
| 96 | +end; |
| 97 | + |
| 98 | +method run(); |
| 99 | + set SASEP.IN; |
| 100 | + score(Avg_Area_Income, Avg_Area_House_Age, Avg_Area_Number_of_Rooms, Avg_Area_Number_of_Bedrooms, Area_Population, resultCode, EM_PREDICTION, EM_PREDICTION); |
| 101 | +end; |
| 102 | +enddata; |
| 103 | + |
0 commit comments