def ppf(self, x): # convert the parameter to the right format if isList(x): x = DataVector(x) elif isNumerical(x): x = DataVector([x]) if isinstance(x, DataMatrix): A = x B = DataMatrix(A.getNrows(), A.getNcols()) B.setAll(0.0) elif isinstance(x, DataVector): A = DataMatrix(1, len(x)) A.setRow(0, x) B = DataMatrix(1, len(x)) B.setAll(0) # do the transformation assert A.getNcols() == B.getNcols() == self.trainData.getNcols() op = createOperationInverseRosenblattTransformationKDE(self.trainData) op.doTransformation(A, B) # transform the outcome if isNumerical(x) or isinstance(x, DataVector): return B.get(0, 0) elif isinstance(x, DataMatrix): return B.array()
def cdf(self, x): # convert the parameter to the right format if isList(x): x = DataVector(x) elif isNumerical(x): x = DataVector([x]) elif isMatrix(x): x = DataMatrix(x) if isinstance(x, DataMatrix): A = x B = DataMatrix(A.getNrows(), A.getNcols()) B.setAll(0.0) elif isinstance(x, DataVector): A = DataMatrix(1, len(x)) A.setRow(0, x) B = DataMatrix(1, len(x)) B.setAll(0) # do the transformation self.dist.cdf(A, B) # transform the outcome if isNumerical(x) or isinstance(x, DataVector): return B.get(0, 0) elif isinstance(x, DataMatrix): return B.array()
def ppf(self, x): # convert the parameter to the right format if isList(x): x = DataVector(x) elif isNumerical(x): x = DataVector([x]) elif isMatrix(x): x = DataMatrix(x) if isinstance(x, DataMatrix): A = x B = DataMatrix(A.getNrows(), A.getNcols()) B.setAll(0.0) elif isinstance(x, DataVector): A = DataMatrix(1, len(x)) A.setRow(0, x) B = DataMatrix(1, len(x)) B.setAll(0) # do the transformation opInvRosen = createOperationInverseRosenblattTransformationKDE(self.dist) opInvRosen.doTransformation(A, B) # transform the outcome if isNumerical(x) or isinstance(x, DataVector): return B.get(0, 0) elif isinstance(x, DataMatrix): return B.array()
def __init__(self, numDims, trainData=None, bounds=None): super(EstimatedDist, self).__init__() self.trainData = None self.dim = numDims self.trans = None if trainData is not None: if isList(trainData) or len(trainData.shape) == 1: trainData = np.array([trainData]).reshape(len(trainData), 1) self.trainData = trainData self.dim = trainData.shape[1] if bounds is None: # estimate bounds from data bounds = np.vstack( (np.min(trainData, axis=0), np.max(trainData, axis=0))).T if bounds is None: self.bounds = np.array([[0, 1]] * self.dim, dtype="float") else: self.bounds = bounds self.trans = self.computeLinearTransformation(self.bounds)
def ppf(self, x): # convert the parameter to the right format if isList(x): x = DataVector(x) elif isNumerical(x): x = DataVector([x]) elif isMatrix(x): x = DataMatrix(x) if isinstance(x, DataMatrix): A = x B = DataMatrix(A.getNrows(), A.getNcols()) B.setAll(0.0) elif isinstance(x, DataVector): A = DataMatrix(1, len(x)) A.setRow(0, x) B = DataMatrix(1, len(x)) B.setAll(0) # do the transformation self.dist.ppf(A, B) # transform the outcome if isNumerical(x) or isinstance(x, DataVector): return B.get(0, 0) elif isinstance(x, DataMatrix): return B.array()
def _convertEvalPoint(self, x): # convert the parameter to the right format if self.dim == 1: if isNumerical(x): x = np.array([[x]]) elif isList(x) or len(x.shape) == 1: x = np.array([x]).reshape(len(x), 1) else: x = np.array(x) if len(x.shape) == 1: x = np.array([x]) return x
def pdf(self, x): # convert the parameter to the right format if isList(x): x = DataVector(x) elif isNumerical(x): x = DataVector([x]) if isinstance(x, DataMatrix): A = x res = DataVector(A.getNrows()) res.setAll(0.0) elif isinstance(x, DataVector): A = DataMatrix(1, len(x)) A.setRow(0, x) res = DataVector(1) res.setAll(0) self.dist.pdf(A, res) if len(res) == 1: return res[0] else: return res.array()