0 / 0
Go back to the English version of the documentation
właściwości węzła applyextension
Last updated: 12 sty 2023
właściwości węzła applyextension

W celu wygenerowania modelu użytkowego rozszerzenia można użyć węzłów modelu rozszerzenia. Ten model użytkowy w skryptach nosi nazwę applyextension. Więcej informacji na temat skryptów samego węzła modelowania można znaleźć w sekcji Właściwości węzła extensionmodelnode.

Python for Spark — przykład

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)

Przykład w języku 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)""")
Tabela 1. właściwości rozszerzenia applyextension
Właściwości węzłaapplyextension Wartości Opis właściwości
r_syntax łańcuch Komendy skryptu R realizujące ocenę modelu.
python_syntax łańcuch Komendy skryptu Python realizujące ocenę modelu.
use_batch_size flaga Włącza przetwarzanie wsadowe.
batch_size liczba całkowita Określ liczbę rekordów danych, które mają być uwzględnione w każdej partii.
convert_flags StringsAndDoubles
LogicalValues
Opcja przekształcania zmiennych typu flaga.
convert_missing flaga Opcja przekształcania brakujących wartości w RNA.
convert_datetime flaga Opcja przekształcania zmiennych o formacie daty lub daty/czasu na formaty daty/czasu języka R.
convert_datetime_class
POSIXct

POSIXlt
Opcje określające format docelowy, na który przekształcane są zmienne w formacie daty i daty/czasu.
Generative AI search and answer
These answers are generated by a large language model in watsonx.ai based on content from the product documentation. Learn more