def __init__(self, x_data, y_data, paramters=None): self.log = logging.getLogger('RockPy.FITTING.log_normal') super(Log_Normal, self).__init__(x_data, y_data, paramters=None, log=self.log) self.log.info('FITTING\t log normal distribution to data') self.fit_x = np.linspace(min(self.x), max(self.x), 1000) self.parameters.add('B', value=0.01) self.parameters.add('E', value=1.0) self.parameters.add('G', value=0.5) ''' Fitting ''' errfunc = lambda p, x, y: functions.log_normal(self.parameters, x) - y fitout = minimize(errfunc, self.parameters, args=(self.x, self.y)) self.fit_y = functions.log_normal(self.parameters, self.fit_x)
# ============================================================================= # Import data # ============================================================================= no2, nox, pm10, meteo, time = import_data.import_data() # ============================================================================= # Pre-processing # ============================================================================= no2 = np.array(no2).reshape(5, -1) # Replace zeros with average no2 = functions.replace_zero_with_average(no2) # Log-normal transform no2_transformed = functions.log_normal(no2) # ============================================================================= # Configuration # ============================================================================= time_test = np.arange('2014-03-11', '2014-03-12', dtype='datetime64[h]') time_train = np.arange('2006-01-01', '2013-01-01', dtype='datetime64[h]') index_test = np.arange( np.where(time == time_test[0])[0], np.where(time == time_test[-1])[0] + 1) index_train = np.arange( np.where(time == time_train[0])[0], np.where(time == time_train[-1])[0] + 1)
# ============================================================================= # Import data # ============================================================================= no2, nox, pm10, meteo, time = import_data.import_data() # ============================================================================= # Pre-processing # ============================================================================= pm10 = np.array(pm10).reshape(5, -1) meteo = np.array(meteo).reshape(5, -1) # Replace zeros with average pm10 = functions.replace_zero_with_average(pm10) # Log-normal transform pm10_transformed = functions.log_normal(pm10) # ============================================================================= # Configuration # ============================================================================= time_test_output = np.arange('2014-03-15', '2014-03-16', dtype='datetime64[h]') time_test_input = np.arange('2014-03-14', '2014-03-15', dtype='datetime64[h]') time_train_output = np.arange('2006-01-02', '2013-01-01', dtype='datetime64[h]') time_train_input = np.arange('2006-01-01', '2012-12-31', dtype='datetime64[h]') index_test_output = np.arange( np.where(time == time_test_output[0])[0], np.where(time == time_test_output[-1])[0] + 1)
def calc(self, x_value): out = functions.log_normal(self.parameters, x_value) return out