0 / 0
Retourner à la version anglaise de la documentation
propriétés de applyextension
Dernière mise à jour : 07 oct. 2024
propriétés de applyextension

Vous pouvez utiliser les noeuds de modèle d'extension pour générer un nugget de modèle d'extension. Le nom de génération de script de ce nugget de modèle est applyextension. Pour plus d'informations à propos de la génération de script pour le noeud de modélisation lui-même, voir Propriétés d'extensionmodelnode.

Exemple Python for Spark

script example for Python for Spark
applyModel = stream.findByType("extension_apply", None)

score_script = """
import json
import spss.pyspark.runtime
from pyspark.mllib.regression import LabeledPoint
from pyspark.mllib.linalg import DenseVector
from pyspark.mllib.tree import DecisionTreeModel
from pyspark.sql.types import StringType, StructField

cxt = spss.pyspark.runtime.getContext()

if cxt.isComputeDataModelOnly():
    _schema = cxt.getSparkInputSchema()
    _schema.fields.append(StructField("Prediction", StringType(), nullable=True))
    cxt.setSparkOutputSchema(_schema)
else:
    df = cxt.getSparkInputData()

    _modelPath = cxt.getModelContentToPath("TreeModel")
    metadata = json.loads(cxt.getModelContentToString("model.dm"))

    schema = df.dtypes[:]
    target = "Drug"
    predictors = ["Age","BP","Sex","Cholesterol","Na","K"]

    lookup = {}
    for i in range(0,len(schema)):
        lookup[schema[i][0]] = i

    def row2LabeledPoint(dm,lookup,target,predictors,row):
        target_index = lookup[target]
        tval = dm[target_index].index(row[target_index])
        pvals = []
        for predictor in predictors:
            predictor_index = lookup[predictor]
            if isinstance(dm[predictor_index],list):
                pval = row[predictor_index] in dm[predictor_index] and dm[predictor_index].index(row[predictor_index]) or -1
            else:
                pval = row[predictor_index]
            pvals.append(pval)
        return LabeledPoint(tval, DenseVector(pvals))

    # convert dataframe to an RDD containing LabeledPoint
    lps = df.rdd.map(lambda row: row2LabeledPoint(metadata,lookup,target,predictors,row))
    treeModel = DecisionTreeModel.load(cxt.getSparkContext(), _modelPath);
    # score the model, produces an RDD containing just double values
    predictions = treeModel.predict(lps.map(lambda lp: lp.features))

    def addPrediction(x,dm,lookup,target):
        result = []
        for _idx in range(0, len(x[0])):
            result.append(x[0][_idx])
        result.append(dm[lookup[target]][int(x[1])])
        return result

    _schema = cxt.getSparkInputSchema()
    _schema.fields.append(StructField("Prediction", StringType(), nullable=True))
    rdd2 = df.rdd.zip(predictions).map(lambda x:addPrediction(x, metadata, lookup, target))
    outDF = cxt.getSparkSQLContext().createDataFrame(rdd2, _schema)

    cxt.setSparkOutputData(outDF)
"""
applyModel.setPropertyValue("python_syntax", score_script)

exemple R

script example for R
applyModel.setPropertyValue("r_syntax", """
result<-predict(modelerModel,newdata=modelerData)
modelerData<-cbind(modelerData,result)
var1<-c(fieldName="NaPrediction",fieldLabel="",fieldStorage="real",fieldMeasure="",
fieldFormat="",fieldRole="")
modelerDataModel<-data.frame(modelerDataModel,var1)""")
Tableau 1. propriétés de applyextension
Propriétés applyextension Valeurs Description de la propriété
r_syntax chaîne Syntaxe de script R pour l'évaluation du modèle.
python_syntax chaîne Syntaxe du scriptage Python pour l'évaluation du modèle.
use_batch_size option Activez l'utilisation du traitement par lots.
batch_size Integer Indiquez le nombre d'enregistrements de données à inclure dans chaque lot.
convert_flags StringsAndDoubles
LogicalValues
Option permettant de convertir des champs indicateurs.
convert_missing option Option permettant de convertir les valeurs manquantes en RNAvaleur.
convert_datetime option Option permettant de convertir des variables au format de date ou date-heure en format de date/heure R.
convert_datetime_class
POSIXct

POSIXlt
Options permettant d'indiquer dans quel format sont converties les variables au format de date ou date-heure.