Name

sn_rf.RFClassificationPIWBEvaluator

Description

Evaluation script for Classification PIWB Evaluation type

Script

var RFClassificationPIWBEvaluator = Class.create();
RFClassificationPIWBEvaluator.prototype = Object.extendsObject(sn_rf.RFEvaluatorSNC, {
  category: 'rf_evaluation_script', // DO NOT REMOVE THIS LINE!

  getEvaluationOutputSchema: function(param) {
      var rfLogger = new RFLogger('RFClassificationPIWBEvaluator - getEvaluationOutputSchema');
      var inputs = param.inputs;
      var classification = new RFPIWBClassificationService(inputs.classification_usecase);
      if (classification.hasValidRecord()) {
          var schema = [];
          var metaData = {};
          if (classification.getOutputFieldType() == RFConstants.evaluationOutputTypes.REFERENCE) {
              RFUtils.addToSchema(schema,
                  RFConstants.evaluationOutputNames.PREDICTED_RECORD,
                  RFConstants.evaluationOutputLabels.PREDICTED_RECORD,
                  RFConstants.evaluationOutputTypes.REFERENCE,
                  classification.getOutputFieldReferenceTable());
              metaData['uniqueKey'] = [RFConstants.evaluationOutputNames.PREDICTED_RECORD];
          } else {
              RFUtils.addToSchema(schema,
                  RFConstants.evaluationOutputNames.PREDICTED_VALUE,
                  RFConstants.evaluationOutputLabels.PREDICTED_VALUE,
                  RFConstants.evaluationOutputTypes.STRING);
              metaData['uniqueKey'] = [RFConstants.evaluationOutputNames.PREDICTED_VALUE];
          }
          RFUtils.addToSchema(schema,
              RFConstants.evaluationOutputNames.CONFIDENCE_SCORE,
              RFConstants.evaluationOutputLabels.CONFIDENCE_SCORE,
              RFConstants.evaluationOutputTypes.STRING);
          metaData['confidence'] = RFConstants.evaluationOutputNames.CONFIDENCE_SCORE;
          return {
              'status': RFConstants.SUCCESS,
              'schema': schema,
              'metaData': metaData
          };
      }
      var errorDetails = new RFExceptionManager('INVALID_PIWB_USECASE');
      rfLogger.logError('PIWB usecase ' + inputs.classification_usecase + ' is invalid');
      return {
          'status': RFConstants.ERROR,
          'errorCode': errorDetails.getCode(),
          'errorMessage': errorDetails.getMessage()
      };
  },

  getEvaluationOutputs: function(param) {
      var rfLogger = new RFLogger('RFClassificationPIWBEvaluator - getEvaluationOutputs');
      var inputs = param.inputs;
      var classification = new RFPIWBClassificationService(inputs.classification_usecase);

      if (classification.hasValidRecord()) {
          var additionalParameters = {};
          additionalParameters[RFConstants.mlPredictorOptions.TOP_N] = inputs.top_n_results;
          var predictions = classification.getPredictions(param.contextRecord, additionalParameters);
          rfLogger.logDebug('PIWB usecase ' + inputs.classification_usecase + ' returned ' + predictions.length + ' predictions');
          var evaluationOutputs = [];
          for (var predictionIdx = 0; predictionIdx < predictions.length; predictionIdx++) {
              var prediction = {};
              if (classification.getOutputFieldType() == RFConstants.evaluationOutputTypes.REFERENCE) {
                  prediction[RFConstants.evaluationOutputNames.PREDICTED_RECORD] = predictions[predictionIdx].predictedValueSysId();
              } else {
                  prediction[RFConstants.evaluationOutputNames.PREDICTED_VALUE] = predictions[predictionIdx].predictedValue();
              }
              prediction[RFConstants.evaluationOutputNames.CONFIDENCE_SCORE] = predictions[predictionIdx].confidence();
              evaluationOutputs.push(prediction);
          }
          return {
              'status': RFConstants.SUCCESS,
              'evaluationOutputs': evaluationOutputs
          };
      }
      var errorDetails = new RFExceptionManager('INVALID_PIWB_USECASE');
      rfLogger.logError('PIWB usecase ' + inputs.classification_usecase + ' is invalid');
      return {
          'status': RFConstants.ERROR,
          'errorCode': errorDetails.getCode(),
          'errorMessage': errorDetails.getMessage()
      };
  },

  type: 'RFClassificationPIWBEvaluator'
});

Sys ID

f70571d9531730107234ddeeff7b12c4

Offical Documentation

Official Docs: