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

Icône du noeud Modèle d'extensionAvec le noeud Modèle d'extension, vous pouvez exécuter des scripts R ou Python for Spark pour la génération et l'évaluation des résultats.

Notez que de nombreuses propriétés et une grande partie des informations de cette page ne s'appliquent qu'aux flux SPSS Modeler Desktop .

Exemple Python for Spark

import modeler.api
stream = modeler.script.stream()
node = stream.create("extension_build", "extension_build")
node.setPropertyValue("syntax_type", "Python")

build_script = """
import json
import spss.pyspark.runtime
from pyspark.mllib.regression import LabeledPoint
from pyspark.mllib.linalg import DenseVector
from pyspark.mllib.tree import DecisionTree

cxt = spss.pyspark.runtime.getContext()
df = cxt.getSparkInputData()
schema = df.dtypes[:]

target = "Drug"
predictors = ["Age","BP","Sex","Cholesterol","Na","K"]

def metaMap(row,schema):
    col = 0
    meta = []
    for (cname, ctype) in schema:
        if ctype == 'string':
            meta.append(set([row[col]]))
        else:
            meta.append((row[col],row[col]))
        col += 1        
    return meta

def metaReduce(meta1,meta2,schema):
    col = 0
    meta = []
    for (cname, ctype) in schema:
        if ctype == 'string':
            meta.append(meta1[col].union(meta2[col]))
        else:
            meta.append((min(meta1[col][0],meta2[col][0]),max(meta1[col][1],meta2[col][1])))
        col += 1
    return meta

metadata = df.rdd.map(lambda row: metaMap(row,schema)).reduce(lambda x,y:metaReduce(x,y,schema))

def setToList(v):
    if isinstance(v,set): 
        return list(v)
    return v

metadata = map(lambda x: setToList(x), metadata)
print metadata

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 = dm[predictor_index].index(row[predictor_index])
        else:
            pval = row[predictor_index]
        pvals.append(pval)
    return LabeledPoint(tval,DenseVector(pvals))

# count number of target classes
predictorClassCount = len(metadata[lookup[target]])

# define function to extract categorical predictor information from datamodel 
def getCategoricalFeatureInfo(dm,lookup,predictors):
    info = {}
    for i in range(0,len(predictors)):
        predictor = predictors[i]
        predictor_index = lookup[predictor]
        if isinstance(dm[predictor_index],list):
            info[i] = len(dm[predictor_index])
    return info

# convert dataframe to an RDD containing LabeledPoint
lps = df.rdd.map(lambda row: row2LabeledPoint(metadata,lookup,target,predictors,row))

treeModel = DecisionTree.trainClassifier(
    lps,
    numClasses=predictorClassCount,
    categoricalFeaturesInfo=getCategoricalFeatureInfo(metadata, lookup, predictors),
    impurity='gini',
    maxDepth=5,
    maxBins=100)

_outputPath = cxt.createTemporaryFolder()
treeModel.save(cxt.getSparkContext(), _outputPath)
cxt.setModelContentFromPath("TreeModel", _outputPath)
cxt.setModelContentFromString("model.dm",json.dumps(metadata), mimeType="application/json")\
   .setModelContentFromString("model.structure",treeModel.toDebugString())

"""

node.setPropertyValue("python_build_syntax", build_script)

exemple R

node.setPropertyValue("syntax_type", "R")
node.setPropertyValue("r_build_syntax", """modelerModel <- lm(modelerData$Na~modelerData$K,modelerData)
modelerDataModel
modelerModel 
""")
Tableau 1. propriétés de extensionmodelnode
Propriétés extensionmodelnode Valeurs Description de la propriété
syntax_type R Python Indiquez le script qui s'exécute : R ou Python (R est la valeur par défaut).
r_build_syntax chaîne Syntaxe du scriptage R pour la génération du modèle.
r_score_syntax chaîne Syntaxe du scriptage R pour l'évaluation du modèle.
python_build_syntax chaîne Syntaxe du scriptage Python pour la génération du modèle.
python_score_syntax chaîne Syntaxe du scriptage Python pour l'évaluation du modèle.
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.
output_html option Option permettant d'afficher des graphiques dans le nugget de modèle R.
output_text option Option permettant d'écrire la sortie de texte de la console R dans le nugget de modèle R.
Recherche et réponse à l'IA générative
Ces réponses sont générées par un modèle de langue de grande taille dans watsonx.ai en fonction du contenu de la documentation du produit. En savoir plus