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