code: def predict_proba(self, X):
          
          
          parameters = np.ascontiguousarray(self.parameters.T)
  
          predictions = [_Model(self._state_machine, x).predict(parameters, self.viterbi)
                         for x in X]
          predictions = np.array([[probability
                                   for _, probability
                                   in sorted(prediction.items())]
                                  for prediction in predictions])
          return predictions
docs: Probability estimates.
  
          The returned estimates for all classes are ordered by the
          label of classes.
  
          Parameters
          ----------
          X : List of ndarrays, one for each training example.
              Each training example's shape is (string1_len, string2_len, n_features, where
              string1_len and string2_len are the length of the two training strings and n_features the
              number of features.
  
          Returns
          -------
          T : array-like, shape = [n_samples, n_classes]
              Returns the probability of the sample for each class in the model,
              where classes are ordered as they are in ``self.classes_``.