from data.access import DataPipeLine import os # [1, 12, 55, 80, 17, 77, 71, 6, 28] detail_wgs = [4891, 2426, 2363, 2456, 2447, 2453, 2451, 2448, 2455, 2454, 2764, 2452, 2444, 2443, 2427, 2428, 2449, 2399, 2457, 2437, 2419, 2436, 2450] dic = dict.fromkeys(detail_wgs) dic2 = dict.fromkeys(detail_wgs) pipeline = DataPipeLine(ZielWarengruppen=[55]) simulation_data = pipeline.get_regression_data() print([df.shape for df in simulation_data]) for detail_wg in detail_wgs: print('Starte mit Warengruppe', detail_wg) simulation_params = { 'ZielWarengruppen': [55], 'DetailWarengruppe': [detail_wg] } try: pipeline = DataPipeLine(**simulation_params) simulation_data = pipeline.get_regression_data() dic[detail_wg] = [df.shape for df in simulation_data] except ValueError: # Nach Filtern keine Daten mehr übrig. Erzeugt ValueError bei max(Absatzjahre) print('\t\tDas hat nicht geklappt')
from data.preparation import split_np_arrays from utils import Hyperparameter plt.style.use('ggplot') # region Hyperparameter hps = Hyperparameter() hps.load(os.path.join('files', 'logging', 'A3C', '7eval17', 'Hyperparameter.yaml')) predictor_dir = os.path.join('files', 'models', 'PredictorV2', '02RegWG' + str(hps.warengruppe[0])) available_weights = os.listdir(predictor_dir) available_weights.sort() predictor_path = os.path.join(predictor_dir, available_weights[-1]) # endregion pipeline = DataPipeLine(ZielWarengruppen=hps.warengruppe, DetailWarengruppe=hps.detail_warengruppe) simulation_data = pipeline.get_regression_data() train_data, test_data = split_np_arrays(*simulation_data) predictor = Predictor() predictor.build_model( dynamic_state_shape=simulation_data[1].shape[2], static_state_shape=simulation_data[2].shape[1] ) predictor.load_from_weights(predictor_path) print('Predicting ', end='') train_pred = predictor.predict( { 'dynamic_input': train_data[1],
# bp = ax.boxplot(test.to_numpy(), flierprops=flierprops) # x_tick_labels = test.columns.values # x_ticks = np.arange(0, len(x_tick_labels), 3) # x_ticks_labels = x_tick_labels[x_ticks] # ax.set_xticks(x_ticks) # Diagramm umgedreht # ax.set_xticklabels(x_ticks_labels) # ax.set_xlabel('Warengruppe') # ax.set_title('Streubreite der Tagesabsätze je Warengruppe') # plt.savefig('files/graphics/Warengruppen Boxplot.png') # plt.show() # endregion # region Saisonalität wg = 6 pipeline = DataPipeLine(ZielWarengruppe=[wg]) absatz, bewegung, artikelstamm = pipeline.get_statistics_data() del bewegung absatz = absatz[['Artikel', 'Datum', 'Menge']] absatz = pd.pivot_table(absatz, values='Menge', index=['Datum'], columns=['Artikel'], aggfunc=np.sum) # absatz.fillna(0, inplace=True) absatz = absatz.apply(lambda x: np.log(x + 1)) fig, ax = plt.subplots() im = ax.imshow(absatz.T.to_numpy(), cmap=cm.gist_rainbow, aspect='auto') y_tick_labels = absatz.T.index.values
simulation_params = { 'ZielWarengruppen': [55], 'DetailWarengruppe': [2363] } markt_index = { 27: 0, 67: 1, 87: 2, 128: 3, 129: 4, 147: 5 } inv_markt_index = {k: v for v, k in markt_index.items()} pipeline = DataPipeLine(**simulation_params) absatz, bewegung, artikelstamm = pipeline.get_statistics_data() aggr = absatz.groupby(['Artikel', 'Markt']).sum()['Menge']*8 kleine = aggr[aggr < 40] kleine_artikel = kleine.index.values grosse = aggr[aggr > 40] grosse_artikel = grosse.index.values test_artikel = random.choice(kleine_artikel) artikel_bewegung = bewegung[(bewegung.Artikel == test_artikel[0]+1) & (bewegung.Markt == inv_markt_index[test_artikel[1]])] pivot = artikel_bewegung.pivot_table(index='Datum', values='Menge', columns=['Belegtyp'], aggfunc=np.sum) pivot.plot(subplots=True, style=['.', '.', '.', '.', '.', '.', '.'], title=artikelstamm.loc[test_artikel[0]].Bezeichnung) plt.show() # 180471 # 180472
'static_state_shape': None, 'epochs': 50, 'batch_size': 512 } regression_params = { 'InputDirectory': os.path.join('files', 'raw'), 'OutputDirectory': os.path.join('files', 'prepared'), 'ZielWarengruppen': [warengruppe], 'StatStateCategoricals': { 'MHDgroup': 7, 'Detailwarengruppe': None, 'Einheit': None, 'Markt': 6 }, } pipeline = DataPipeLine(**regression_params) lab, dyn, stat, split_helper = pipeline.get_regression_data() train_data, test_data = split_np_arrays(lab, dyn, stat, split_helper) params.update({ 'steps_per_epoch': int(train_data[1].shape[0] / params['batch_size']), 'val_steps_per_epoch': int(test_data[1].shape[0] / params['batch_size']), 'dynamic_state_shape': dyn.shape[2], 'static_state_shape': stat.shape[1], 'Name': '02RegWG' + str(warengruppe) }) dataset = create_dataset(*train_data[:3], params)
action_size = 6 state_size = np.array([18]) simulation_params = { 'InputDirectory': os.path.join('files', 'raw'), 'OutputDirectory': os.path.join('files', 'prepared'), 'ZielWarengruppen': [71], 'StatStateCategoricals': {'MHDgroup': 7, 'Detailwarengruppe': None, 'Einheit': None, 'Markt': 6}, } predictor_dir = os.path.join('files', 'models', 'PredictorV2', '02RegWG' + str(warengruppe)) available_weights = os.listdir(predictor_dir) available_weights.sort() predictor_path = os.path.join(predictor_dir, available_weights[-1]) agent_path = os.path.join('files', 'models', 'DDDQN', 'Run44', 'model_9975.ckpt') # endregion pipeline = DataPipeLine(**simulation_params) simulation_data = pipeline.get_regression_data() train_data, test_data = split_np_arrays(*simulation_data, percentage=0) state_size[0] += simulation_data[2].shape[1] predictor = Predictor() predictor.build_model( dynamic_state_shape=simulation_data[1].shape[2], static_state_shape=simulation_data[2].shape[1] ) predictor.load_from_weights(predictor_path) print('Predicting', end='') pred = predictor.predict( { 'dynamic_input': train_data[1],