Retourner à la version anglaise de la documentationpropriétés de applyextension
propriétés de applyextension
Dernière mise à jour : 07 oct. 2024
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)""")
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. |