conda create -n ag python=3.10
pip install -U uv
python -m uv pip install autogluon==1.4
uv pip install autogluon.tabular[tabicl]
uv pip install matplotlib
Step 1: Reproduction of Table 2 & Fig3 & Fig4
Step 1.1: Experiments Running
for split in s0 s1 s2; do
dataset="vpn-service-${split}"
nohup python -u main.py --root_path dataset --experiment per-flow --dataset "${dataset}" --model_name RandomForestGini --min_bound 0.0 --importance_type default --window 5 --rounds 100 > "rf-${dataset}.log" 2>&1 &
done
for split in s0 s1 s2; do
dataset="app53-time-${split}"
nohup python -u main.py --root_path dataset --experiment per-flow --dataset "${dataset}" --model_name RandomForestGini --min_bound 0.0 --importance_type default --window 5 --rounds 100 > "rf-${dataset}.log" 2>&1 &
done
for split in s0 s1 s2; do
dataset="app53-version-${split}"
nohup python -u main.py --root_path dataset --experiment per-flow --dataset "${dataset}" --model_name RandomForestGini --min_bound 0.0 --importance_type default --window 5 --rounds 100 > "rf-${dataset}.log" 2>&1 &
done
for split in s0 s1 s2; do
dataset="tls-${split}"
nohup python -u main.py --root_path dataset --experiment per-packet --dataset "${dataset}" --model_name RandomForestGini --min_bound 0.0 --importance_type default --window 5 --rounds 100 > "${dataset}.log" 2>&1 &
done
Step 1.2: Results Calculation and Collection
python evaluate/table2.py
python evaluate/create_fig3.py
python evaluate/create_fig4.py
Step 2: Reproduction of Table 4 (Require GPU)
Step 2.1: Experiments Running
for config in \
"per-flow vpn-service-s2 mlp-vpn-s2" \
"per-flow app53-time-s2 mlp-app53-time-s2" \
"per-flow app53-time-s2 mlp-app53-version-s2" \
"per-packet tls-s2 mlp-tls-s2"; do
set -- ${config}
experiment="$1"
dataset="$2"
log_name="$3"
nohup python -u main.py --root_path dataset --experiment "${experiment}" --dataset "${dataset}" --model_name NeuralNetTorch --min_bound 0.0 --importance_type permutation --window 5 --rounds 100 --num_gpus 1 > "${log_name}.log" 2>&1 &
done
for config in \
"per-flow vpn-service-s2 tabicl-vpn-versice-s2" \
"per-flow app53-time-s2 tabicl-app53-time-s2" \
"per-flow app53-time-s2 tabicl-app53-version-s2"; do
set -- ${config}
experiment="$1"
dataset="$2"
log_name="$3"
nohup python -u main.py --root_path dataset --experiment "${experiment}" --dataset "${dataset}" --model_name TABICL --min_bound 0.0 --importance_type permutation --window 5 --rounds 100 --num_gpus 1 > "${log_name}.log" 2>&1 &
done
Step 2.2: Results Calculation and Collection
python evaluate/table4.py
Step 3: Reproduction of Table 5
Step 3.1: Experiments Running
for size in {40..44}; do
for sample in 1 2 4 8; do
dataset="sample-${size}-${sample}"
nohup python -u main.py --root_path sample_dataset --experiment per-flow --dataset "${dataset}" --model_name RandomForestGini --min_bound 0.0 --importance_type default --window 5 --rounds 100 > "${dataset}.log" 2>&1 &
done
done
Step 3.2: Results Calculation and Collection
python evaluate/table5.py
Step 4: Reproduction of Table 6
Step 4.1: Experiments Running
dataset="app53-time-s2"
for window in 1 3 7; do
nohup python -u main.py --root_path dataset --experiment per-flow --dataset "${dataset}" --model_name RandomForestGini --min_bound 0.0 --importance_type default --window "${window}" --rounds 100 > "${dataset}-w${window}.log" 2>&1 &
done
dataset="tls-s2"
for window in 1 3 7; do
nohup python -u main.py --root_path dataset --experiment per-packet --dataset "${dataset}" --model_name RandomForestGini --min_bound 0.0 --importance_type default --window "${window}" --rounds 100 > "${dataset}-w${window}.log" 2>&1 &
done
Step 4.2: Results Calculation and Collection
python evaluate/table6.py
Step 5: Reproduction of Figure 5
python evaluate/create_fig5.py