Source code for synapse.ml.cognitive.anomaly.DetectLastMultivariateAnomaly

# Copyright (C) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See LICENSE in project root for information.


import sys
if sys.version >= '3':
    basestring = str

from pyspark import SparkContext, SQLContext
from pyspark.sql import DataFrame
from pyspark.ml.param.shared import *
from pyspark import keyword_only
from pyspark.ml.util import JavaMLReadable, JavaMLWritable
from synapse.ml.core.platform import running_on_synapse_internal
from synapse.ml.core.serialize.java_params_patch import *
from pyspark.ml.wrapper import JavaTransformer, JavaEstimator, JavaModel
from pyspark.ml.evaluation import JavaEvaluator
from pyspark.ml.common import inherit_doc
from synapse.ml.core.schema.Utils import *
from pyspark.ml.param import TypeConverters
from synapse.ml.core.schema.TypeConversionUtils import generateTypeConverter, complexTypeConverter


[docs]@inherit_doc class DetectLastMultivariateAnomaly(ComplexParamsMixin, JavaMLReadable, JavaMLWritable, JavaTransformer): """ Args: AADToken (object): AAD Token used for authentication batchSize (int): The max size of the buffer concurrency (int): max number of concurrent calls concurrentTimeout (float): max number seconds to wait on futures if concurrency >= 1 diagnosticsInfo (object): diagnosticsInfo for training a multivariate anomaly detection model errorCol (str): column to hold http errors handler (object): Which strategy to use when handling requests inputVariablesCols (list): The names of the input variables columns modelId (str): Format - uuid. Model identifier. outputCol (str): The name of the output column subscriptionKey (object): the API key to use timeout (float): number of seconds to wait before closing the connection timestampCol (str): Timestamp column name topContributorCount (int): This is a number that you could specify N from 1 to 30, which will give you the details of top N contributed variables in the anomaly results. For example, if you have 100 variables in the model, but you only care the top five contributed variables in detection results, then you should fill this field with 5. The default number is 10. url (str): Url of the service """ AADToken = Param(Params._dummy(), "AADToken", "ServiceParam: AAD Token used for authentication") batchSize = Param(Params._dummy(), "batchSize", "The max size of the buffer", typeConverter=TypeConverters.toInt) concurrency = Param(Params._dummy(), "concurrency", "max number of concurrent calls", typeConverter=TypeConverters.toInt) concurrentTimeout = Param(Params._dummy(), "concurrentTimeout", "max number seconds to wait on futures if concurrency >= 1", typeConverter=TypeConverters.toFloat) diagnosticsInfo = Param(Params._dummy(), "diagnosticsInfo", "diagnosticsInfo for training a multivariate anomaly detection model") errorCol = Param(Params._dummy(), "errorCol", "column to hold http errors", typeConverter=TypeConverters.toString) handler = Param(Params._dummy(), "handler", "Which strategy to use when handling requests") inputVariablesCols = Param(Params._dummy(), "inputVariablesCols", "The names of the input variables columns", typeConverter=TypeConverters.toListString) modelId = Param(Params._dummy(), "modelId", "Format - uuid. Model identifier.", typeConverter=TypeConverters.toString) outputCol = Param(Params._dummy(), "outputCol", "The name of the output column", typeConverter=TypeConverters.toString) subscriptionKey = Param(Params._dummy(), "subscriptionKey", "ServiceParam: the API key to use") timeout = Param(Params._dummy(), "timeout", "number of seconds to wait before closing the connection", typeConverter=TypeConverters.toFloat) timestampCol = Param(Params._dummy(), "timestampCol", "Timestamp column name", typeConverter=TypeConverters.toString) topContributorCount = Param(Params._dummy(), "topContributorCount", "This is a number that you could specify N from 1 to 30, which will give you the details of top N contributed variables in the anomaly results. For example, if you have 100 variables in the model, but you only care the top five contributed variables in detection results, then you should fill this field with 5. The default number is 10.", typeConverter=TypeConverters.toInt) url = Param(Params._dummy(), "url", "Url of the service", typeConverter=TypeConverters.toString) @keyword_only def __init__( self, java_obj=None, AADToken=None, AADTokenCol=None, batchSize=300, concurrency=1, concurrentTimeout=None, diagnosticsInfo=None, errorCol="DetectLastMultivariateAnomaly_949acc5bc949_error", handler=None, inputVariablesCols=None, modelId=None, outputCol="DetectLastMultivariateAnomaly_949acc5bc949_output", subscriptionKey=None, subscriptionKeyCol=None, timeout=60.0, timestampCol="timestamp", topContributorCount=10, url=None ): super(DetectLastMultivariateAnomaly, self).__init__() if java_obj is None: self._java_obj = self._new_java_obj("com.microsoft.azure.synapse.ml.cognitive.anomaly.DetectLastMultivariateAnomaly", self.uid) else: self._java_obj = java_obj self._setDefault(batchSize=300) self._setDefault(concurrency=1) self._setDefault(errorCol="DetectLastMultivariateAnomaly_949acc5bc949_error") self._setDefault(outputCol="DetectLastMultivariateAnomaly_949acc5bc949_output") self._setDefault(timeout=60.0) self._setDefault(timestampCol="timestamp") self._setDefault(topContributorCount=10) if hasattr(self, "_input_kwargs"): kwargs = self._input_kwargs else: kwargs = self.__init__._input_kwargs if java_obj is None: for k,v in kwargs.items(): if v is not None: getattr(self, "set" + k[0].upper() + k[1:])(v)
[docs] @keyword_only def setParams( self, AADToken=None, AADTokenCol=None, batchSize=300, concurrency=1, concurrentTimeout=None, diagnosticsInfo=None, errorCol="DetectLastMultivariateAnomaly_949acc5bc949_error", handler=None, inputVariablesCols=None, modelId=None, outputCol="DetectLastMultivariateAnomaly_949acc5bc949_output", subscriptionKey=None, subscriptionKeyCol=None, timeout=60.0, timestampCol="timestamp", topContributorCount=10, url=None ): """ Set the (keyword only) parameters """ if hasattr(self, "_input_kwargs"): kwargs = self._input_kwargs else: kwargs = self.__init__._input_kwargs return self._set(**kwargs)
[docs] @classmethod def read(cls): """ Returns an MLReader instance for this class. """ return JavaMMLReader(cls)
[docs] @staticmethod def getJavaPackage(): """ Returns package name String. """ return "com.microsoft.azure.synapse.ml.cognitive.anomaly.DetectLastMultivariateAnomaly"
@staticmethod def _from_java(java_stage): module_name=DetectLastMultivariateAnomaly.__module__ module_name=module_name.rsplit(".", 1)[0] + ".DetectLastMultivariateAnomaly" return from_java(java_stage, module_name)
[docs] def setAADToken(self, value): """ Args: AADToken: AAD Token used for authentication """ if isinstance(value, list): value = SparkContext._active_spark_context._jvm.com.microsoft.azure.synapse.ml.param.ServiceParam.toSeq(value) self._java_obj = self._java_obj.setAADToken(value) return self
[docs] def setAADTokenCol(self, value): """ Args: AADToken: AAD Token used for authentication """ self._java_obj = self._java_obj.setAADTokenCol(value) return self
[docs] def setBatchSize(self, value): """ Args: batchSize: The max size of the buffer """ self._set(batchSize=value) return self
[docs] def setConcurrency(self, value): """ Args: concurrency: max number of concurrent calls """ self._set(concurrency=value) return self
[docs] def setConcurrentTimeout(self, value): """ Args: concurrentTimeout: max number seconds to wait on futures if concurrency >= 1 """ self._set(concurrentTimeout=value) return self
[docs] def setDiagnosticsInfo(self, value): """ Args: diagnosticsInfo: diagnosticsInfo for training a multivariate anomaly detection model """ self._set(diagnosticsInfo=value) return self
[docs] def setErrorCol(self, value): """ Args: errorCol: column to hold http errors """ self._set(errorCol=value) return self
[docs] def setHandler(self, value): """ Args: handler: Which strategy to use when handling requests """ self._set(handler=value) return self
[docs] def setInputVariablesCols(self, value): """ Args: inputVariablesCols: The names of the input variables columns """ self._set(inputVariablesCols=value) return self
[docs] def setModelId(self, value): """ Args: modelId: Format - uuid. Model identifier. """ self._set(modelId=value) return self
[docs] def setOutputCol(self, value): """ Args: outputCol: The name of the output column """ self._set(outputCol=value) return self
[docs] def setSubscriptionKey(self, value): """ Args: subscriptionKey: the API key to use """ if isinstance(value, list): value = SparkContext._active_spark_context._jvm.com.microsoft.azure.synapse.ml.param.ServiceParam.toSeq(value) self._java_obj = self._java_obj.setSubscriptionKey(value) return self
[docs] def setSubscriptionKeyCol(self, value): """ Args: subscriptionKey: the API key to use """ self._java_obj = self._java_obj.setSubscriptionKeyCol(value) return self
[docs] def setTimeout(self, value): """ Args: timeout: number of seconds to wait before closing the connection """ self._set(timeout=value) return self
[docs] def setTimestampCol(self, value): """ Args: timestampCol: Timestamp column name """ self._set(timestampCol=value) return self
[docs] def setTopContributorCount(self, value): """ Args: topContributorCount: This is a number that you could specify N from 1 to 30, which will give you the details of top N contributed variables in the anomaly results. For example, if you have 100 variables in the model, but you only care the top five contributed variables in detection results, then you should fill this field with 5. The default number is 10. """ self._set(topContributorCount=value) return self
[docs] def setUrl(self, value): """ Args: url: Url of the service """ self._set(url=value) return self
[docs] def getAADToken(self): """ Returns: AADToken: AAD Token used for authentication """ return self._java_obj.getAADToken()
[docs] def getBatchSize(self): """ Returns: batchSize: The max size of the buffer """ return self.getOrDefault(self.batchSize)
[docs] def getConcurrency(self): """ Returns: concurrency: max number of concurrent calls """ return self.getOrDefault(self.concurrency)
[docs] def getConcurrentTimeout(self): """ Returns: concurrentTimeout: max number seconds to wait on futures if concurrency >= 1 """ return self.getOrDefault(self.concurrentTimeout)
[docs] def getDiagnosticsInfo(self): """ Returns: diagnosticsInfo: diagnosticsInfo for training a multivariate anomaly detection model """ return self.getOrDefault(self.diagnosticsInfo)
[docs] def getErrorCol(self): """ Returns: errorCol: column to hold http errors """ return self.getOrDefault(self.errorCol)
[docs] def getHandler(self): """ Returns: handler: Which strategy to use when handling requests """ return self.getOrDefault(self.handler)
[docs] def getInputVariablesCols(self): """ Returns: inputVariablesCols: The names of the input variables columns """ return self.getOrDefault(self.inputVariablesCols)
[docs] def getModelId(self): """ Returns: modelId: Format - uuid. Model identifier. """ return self.getOrDefault(self.modelId)
[docs] def getOutputCol(self): """ Returns: outputCol: The name of the output column """ return self.getOrDefault(self.outputCol)
[docs] def getSubscriptionKey(self): """ Returns: subscriptionKey: the API key to use """ return self._java_obj.getSubscriptionKey()
[docs] def getTimeout(self): """ Returns: timeout: number of seconds to wait before closing the connection """ return self.getOrDefault(self.timeout)
[docs] def getTimestampCol(self): """ Returns: timestampCol: Timestamp column name """ return self.getOrDefault(self.timestampCol)
[docs] def getTopContributorCount(self): """ Returns: topContributorCount: This is a number that you could specify N from 1 to 30, which will give you the details of top N contributed variables in the anomaly results. For example, if you have 100 variables in the model, but you only care the top five contributed variables in detection results, then you should fill this field with 5. The default number is 10. """ return self.getOrDefault(self.topContributorCount)
[docs] def getUrl(self): """ Returns: url: Url of the service """ return self.getOrDefault(self.url)
[docs] def setCustomServiceName(self, value): self._java_obj = self._java_obj.setCustomServiceName(value) return self
[docs] def setEndpoint(self, value): self._java_obj = self._java_obj.setEndpoint(value) return self
[docs] def setDefaultInternalEndpoint(self, value): self._java_obj = self._java_obj.setDefaultInternalEndpoint(value) return self
def _transform(self, dataset: DataFrame) -> DataFrame: if running_on_synapse_internal(): try: from synapse.ml.mlflow import get_mlflow_env_config mlflow_env_configs = get_mlflow_env_config() self._java_obj.setDefaultAADToken(mlflow_env_configs.driver_aad_token) self.setDefaultInternalEndpoint(mlflow_env_configs.workload_endpoint) except ModuleNotFoundError as e: pass return super()._transform(dataset)
[docs] def setLocation(self, value): self._java_obj = self._java_obj.setLocation(value) return self