Volver a la versión inglesa de la documentaciónpropiedades de applyextension
propiedades de applyextension
Última actualización: 04 oct 2024
Puede utilizar los nodos Modelo de extensión para generar un nugget de modelo de extensión. El nombre de script de este nugget de modelo es applyextension. Para obtener más información sobre los scripts para el propio nodo de modelado, consulte propiedades de extensionmodelnode.
Ejemplo de Python para 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)
Ejemplo de 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)""")
Propiedades de applyextension |
Valores | Descripción de la propiedad |
---|---|---|
r_syntax |
serie | Sintaxis de scripts R para la puntuación del modelo. |
python_syntax |
serie | Sintaxis de scripts Python para la puntuación de modelo. |
use_batch_size |
distintivo | Habilitar uso de proceso por lotes. |
batch_size |
entero | Especifique el número de registros de datos que se deben incluir en cada lote. |
convert_flags |
StringsAndDoubles LogicalValues |
Opción para convertir campos de distintivos. |
convert_missing |
distintivo | Opción para convertir valores perdidos en RNAvalor. |
convert_datetime |
distintivo | Opción para convertir las variables con los formatos de fecha o de fecha y hora para formatos de fecha/hora R. |
convert_datetime_class |
POSIXct POSIXlt |
Opciones para especificar a qué formato se convierten las variables con los formatos de fecha o de fecha y hora. |