def __init__(self, pmml):
    PMMLBaseRegressor.__init__(self, pmml)
    OneHotEncodingMixin.__init__(self)

    # Import coefficients and intercepts
    model = self.root.find('RegressionModel')

    if model is None:
      raise Exception('PMML model does not contain RegressionModel.')

    tables = model.findall('RegressionTable')

    self.coef_ = np.array([
      _get_coefficients(self, table)
      for table in tables
    ])
    self.intercept_ = np.array([
      float(table.get('intercept'))
      for table in tables
    ])

    if self.coef_.shape[0] == 1:
      self.coef_ = self.coef_[0]

    if self.intercept_.shape[0] == 1:
      self.intercept_ = self.intercept_[0]
예제 #2
0
    def __init__(self, pmml):
        PMMLBaseClassifier.__init__(self, pmml)
        OneHotEncodingMixin.__init__(self)
        LinearSVC.__init__(self)

        # Import coefficients and intercepts
        model = self.root.find('RegressionModel')

        if model is None:
            raise Exception('PMML model does not contain RegressionModel.')

        tables = [
            table for table in model.findall('RegressionTable')
            if table.find('NumericPredictor') is not None
        ]

        self.coef_ = [
            _linear_get_coefficients(self, table) for table in tables
        ]
        self.intercept_ = [float(table.get('intercept')) for table in tables]

        if len(self.coef_) == 1:
            self.coef_ = [self.coef_[0]]

        if len(self.intercept_) == 1:
            self.intercept_ = [self.intercept_[0]]

        self.coef_ = np.array(self.coef_)
        self.intercept_ = np.array(self.intercept_)
  def __init__(self, pmml):
    PMMLBaseClassifier.__init__(self, pmml)
    OneHotEncodingMixin.__init__(self)
    LogisticRegression.__init__(self)

    # Import coefficients and intercepts
    model = self.root.find('RegressionModel')
    mining_model = self.root.find('MiningModel')
    tables = []

    if mining_model is not None and self.n_classes_ > 2:
      self.multi_class = 'ovr'
      segmentation = mining_model.find('Segmentation')

      if segmentation.get('multipleModelMethod') not in ['modelChain']:
        raise Exception('PMML model for multi-class logistic regression should use modelChain method.')

      # Parse segments
      segments = segmentation.findall('Segment')
      valid_segments = [segment for segment in segments if segment.find('True') is not None]
      models = [segment.find('RegressionModel') for segment in valid_segments]

      tables = [
        models[i].find('RegressionTable') for i in range(self.n_classes_)
      ]
    elif model is not None:
      self.multi_class = 'auto'
      tables = [
        table for table in model.findall('RegressionTable')
        if table.find('NumericPredictor') is not None
      ]
    else:
      raise Exception('PMML model does not contain RegressionModel or Segmentation.')

    self.coef_ = [
      _get_coefficients(self, table)
      for table in tables
    ]
    self.intercept_ = [
      float(table.get('intercept'))
      for table in tables
    ]

    if len(self.coef_) == 1:
      self.coef_ = [self.coef_[0]]

    if len(self.intercept_) == 1:
      self.intercept_ = [self.intercept_[0]]

    self.coef_ = np.array(self.coef_)
    self.intercept_ = np.array(self.intercept_)
    self.solver = 'lbfgs'
예제 #4
0
    def __init__(self, pmml):
        PMMLBaseClassifier.__init__(self, pmml)
        OneHotEncodingMixin.__init__(self)

        # Import coefficients and intercepts
        model = self.root.find('GeneralRegressionModel')

        if model is None:
            raise Exception(
                'PMML model does not contain GeneralRegressionModel.')

        self.coef_ = np.array([_get_coefficients(self, model)])
        self.intercept_ = _get_intercept(model)
    def __init__(self, pmml):
        PMMLBaseClassifier.__init__(self, pmml)
        OneHotEncodingMixin.__init__(self)

        model = self.root.find('NaiveBayesModel')

        if model is None:
            raise Exception('PMML model does not contain NaiveBayesModel.')

        inputs = model.find('BayesInputs')

        target_values = {
            target: self._get_target_values(inputs, target)
            for target in self.classes_
        }

        try:
            outputs = model.find('BayesOutput').find(
                'TargetValueCounts').findall('TargetValueCount')
            counts = [int(x.get('count')) for x in outputs]
            self.class_prior_ = np.array([x / np.sum(counts) for x in counts])
        except AttributeError:
            self.class_prior_ = np.array(
                [1 / len(self.classes_) for _ in self.classes_])

        self.theta_ = np.array(
            [[float(value.get('mean', 0)) for value in target_values[target]]
             for target in self.classes_])
        try:
            self.sigma_ = np.array([[
                float(value.get('variance', 0))
                for value in target_values[target]
            ] for target in self.classes_])
        except AttributeError:
            self.var_ = np.array([[
                float(value.get('variance', 0))
                for value in target_values[target]
            ] for target in self.classes_])
예제 #6
0
 def __init__(self, pmml):
     PMMLBaseRegressor.__init__(self, pmml)
     OneHotEncodingMixin.__init__(self)
     SVR.__init__(self)
     PMMLBaseSVM.__init__(self)
예제 #7
0
 def __init__(self, pmml):
     PMMLBaseClassifier.__init__(self, pmml)
     OneHotEncodingMixin.__init__(self)
     SVC.__init__(self)
     PMMLBaseSVM.__init__(self)