Translation not up to date
The translation of this page does not represent the latest version. For the latest updates, see the English version of the documentation.
Last updated: 04 lip 2023
Z węzłem wynikowym Extension można uruchomić skrypty R lub Python for Spark w celu utworzenia i oceny wyników.
Należy zauważyć, że wiele właściwości i wiele informacji znajdujących się na tej stronie ma zastosowanie tylko do strumieni SPSS Modeler Desktop .
Python for Spark — przykład
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)
Przykład w języku R
node.setPropertyValue("syntax_type", "R")
node.setPropertyValue("r_build_syntax", """modelerModel <- lm(modelerData$Na~modelerData$K,modelerData)
modelerDataModel
modelerModel
""")
Właściwości węzła extensionmodelnode |
Wartości | Opis właściwości |
---|---|---|
syntax_type |
R Python | Określ, który skrypt ma być uruchamiany: R lub Python (domyślnie R jest wartością domyślną). |
r_build_syntax |
łańcuch | Komendy skryptu R do budowy modelu. |
r_score_syntax |
łańcuch | Komendy skryptu R realizujące ocenę modelu. |
python_build_syntax |
łańcuch | Komendy skryptu Python realizujące ocenę modelu. |
python_score_syntax |
łańcuch | Komendy skryptu Python realizujące ocenę modelu. |
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. |
output_html |
Flaga | Opcja wyświetlania wykresów w modelu użytkowym R. |
output_text |
Flaga | Opcja zapisu danych wyjściowych w konsoli R do modelu użytkowego R. |