영어 버전 문서로 돌아가기applyextension 특성
applyextension 특성
마지막 업데이트 날짜: 2024년 10월 07일
확장 모델 노드를 사용하여 확장 모델 너깃을 생성할 수 있습니다. 이 모델 너깃의 스크립팅 이름은 applyextension입니다. 모델링 노드 자체의 스크립팅에 대한 자세한 정보는 extensionmodelnode 특성을 참조하십시오.
Python for 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)
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)""")
applyextension 특성 |
값 | 특성 설명 |
---|---|---|
r_syntax |
문자열 | 모델 스코어링의 R 스크립팅 구문 |
python_syntax |
문자열 | 모델 스코어링을 위한 Python 스크립팅 구문입니다. |
use_batch_size |
플래그 | 배치 처리 사용을 가능하게 합니다. |
batch_size |
정수 | 각 배치에 포함할 데이터 레코드의 수를 지정하십시오. |
convert_flags |
StringsAndDoubles LogicalValues |
플래그 필드를 변환하는 옵션. |
convert_missing |
플래그 | 결측값을 R로 변환하는 옵션NA값. |
convert_datetime |
플래그 | 날짜 또는 날짜/시간 형식을 갖는 변수를 R 날짜/시간 형식으로 변환하는 옵션. |
convert_datetime_class |
POSIXct POSIXlt |
날짜 또는 날짜/시간 형식을 갖는 변수를 변환할 형식을 지정하는 옵션. |