Ejemplo n.º 1
0
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')
Ejemplo n.º 2
0
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],
Ejemplo n.º 3
0
# 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
Ejemplo n.º 4
0
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
Ejemplo n.º 5
0
    '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)
Ejemplo n.º 6
0
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],