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