Views
No views yet
concept:name)lifecycle:transition)next_activity_prediction_lifecycle_dual\next_activity_prediction_lifecycle_dual\models\start_complete\baselinemodel.kerasmetadata.jsonmetrics.json (if available)history.json (if available)0.84438479636809490.69843031813879010.88574079597044110.86726182829202270.83270371474964380.79946528706015221import json
2import numpy as np
3from huggingface_hub import hf_hub_download
4from tensorflow import keras
5
6repo_id = "Nixion/next_activity_prediction_lifecycle_dual"
7model_path = hf_hub_download(repo_id=repo_id, filename="model.keras")
8metadata_path = hf_hub_download(repo_id=repo_id, filename="metadata.json")
9
10with open(metadata_path, "r", encoding="utf-8") as f:
11 metadata = json.load(f)
12
13model = keras.models.load_model(model_path)
14sequence_length = int(metadata["sequence_length"])
15activity_to_idx = metadata["activity_to_idx"]
16lifecycle_to_idx = metadata["lifecycle_to_idx"]
17
18def pad(xs, n):
19 return ([0] * (n - len(xs)) + xs)[-n:]
20
21# Example history:
22activity_hist = ["A_Create Application", "A_Submitted"]
23lifecycle_hist = ["complete", "complete"]
24
25X_act = np.array([pad([activity_to_idx.get(a, 0) for a in activity_hist], sequence_length)], dtype=np.int32)
26X_life = np.array([pad([lifecycle_to_idx.get(l, 0) for l in lifecycle_hist], sequence_length)], dtype=np.int32)
27
28pred_activity_probs, pred_lifecycle_probs = model.predict([X_act, X_life], verbose=0)
29next_activity_idx = int(np.argmax(pred_activity_probs[0]))
30next_lifecycle_idx = int(np.argmax(pred_lifecycle_probs[0]))
31
32idx_to_activity = {int(k): v for k, v in metadata["idx_to_activity"].items()}
33idx_to_lifecycle = {int(k): v for k, v in metadata["idx_to_lifecycle"].items()}
34
35print("next_activity:", idx_to_activity.get(next_activity_idx))
36print("next_lifecycle:", idx_to_lifecycle.get(next_lifecycle_idx))