(self, configspace, fully_dimensional=True, min_bandwidth=1e-4, fix_boundary=True)
Parameters:
		-----------
			configspace: ConfigSpace.ConfigurationSpace object
				description of the configuration space
			fully_dimensional: bool
				if True, a true multivariate KDE is build, otherwise it's approximated by
				the product of one dimensional KDEs
				
			min_bandwidth: float
				a lower limit to the bandwidths which can insure 'uncertainty'
Parameters:
		-----------
			configspace: ConfigSpace.ConfigurationSpace object
				description of the configuration space
			fully_dimensional: bool
				if True, a true multivariate KDE is build, otherwise it's approximated by
				the product of one dimensional KDEs
				
			min_bandwidth: float
				a lower limit to the bandwidths which can insure 'uncertainty'
Parameters : ----------- configspace : ConfigSpace . ConfigurationSpace object description of the configuration space fully_dimensional : bool if True a true multivariate KDE is build otherwise it s approximated by the product of one dimensional KDEs min_bandwidth : float a lower limit to the bandwidths which can insure uncertainty
def __init__(self, configspace, fully_dimensional=True, min_bandwidth=1e-4, fix_boundary=True):
		"""
		Parameters:
		-----------
			configspace: ConfigSpace.ConfigurationSpace object
				description of the configuration space
			fully_dimensional: bool
				if True, a true multivariate KDE is build, otherwise it's approximated by
				the product of one dimensional KDEs
				
			min_bandwidth: float
				a lower limit to the bandwidths which can insure 'uncertainty'
		
		"""
		self.configspace = configspace
		self.types, self.num_values = self._get_types()
		self.min_bandwidth=min_bandwidth
		self.fully_dimensional=fully_dimensional
		self.fix_boundary = fix_boundary
		
		
		# precompute bandwidth bounds
		self.bw_bounds = []
		
		max_bw_cont=0.5
		max_bw_cat = 0.999
		
		for t in self.types:
			if t == 'C':
				self.bw_bounds.append((min_bandwidth, max_bw_cont))
			else:
				self.bw_bounds.append((min_bandwidth, max_bw_cat))
		
		self.bw_clip = np.array([ bwb[1] for bwb in self.bw_bounds ])

		# initialize other vars
		self.bandwidths = np.array([float('NaN')]*len(self.types))
		self.kernels = []
		for t,n in zip(self.types, self.num_values):
			
			kwargs = {'num_values':n, 'fix_boundary':fix_boundary}
			
			if t == 'I':	self.kernels.append(WangRyzinInteger(**kwargs))
			if t == 'C':	self.kernels.append(Gaussian(**kwargs))
			if t == 'O':	self.kernels.append(WangRyzinOrdinal(**kwargs))
			if t == 'U':	self.kernels.append(AitchisonAitken(**kwargs))			
		self.data = None
def __init__ ( self , configspace , fully_dimensional = True , min_bandwidth = 1e-4 , fix_boundary = True ) : self . configspace = configspace self . types , self . num_values = self . _get_types ( ) self . min_bandwidth = min_bandwidth self . fully_dimensional = fully_dimensional self . fix_boundary = fix_boundary # precompute bandwidth bounds self . bw_bounds = [ ] max_bw_cont = 0.5 max_bw_cat = 0.999 for t in self . types : if t == 'C' : self . bw_bounds . append ( ( min_bandwidth , max_bw_cont ) ) else : self . bw_bounds . append ( ( min_bandwidth , max_bw_cat ) ) self . bw_clip = np . array ( [ bwb [ 1 ] for bwb in self . bw_bounds ] ) # initialize other vars self . bandwidths = np . array ( [ float ( 'NaN' ) ] * len ( self . types ) ) self . kernels = [ ] for t , n in zip ( self . types , self . num_values ) : kwargs = { 'num_values' : n , 'fix_boundary' : fix_boundary } if t == 'I' : self . kernels . append ( WangRyzinInteger ( * * kwargs ) ) if t == 'C' : self . kernels . append ( Gaussian ( * * kwargs ) ) if t == 'O' : self . kernels . append ( WangRyzinOrdinal ( * * kwargs ) ) if t == 'U' : self . kernels . append ( AitchisonAitken ( * * kwargs ) ) self . data = None