File size: 1,461 Bytes
724b321
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7bc2636
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import time
from typing import List, Dict, Callable

def summarize_predictions(pred_func: Callable, data) -> Dict:
    """
    Exécute une fonction de prédiction sur des données et retourne
    les statistiques générales des prédictions.

    Args:
        pred_func: fonction de prédiction, doit accepter `data` et retourner une liste ou array de prédictions binaires (0/1)
        data: données sur lesquelles effectuer la prédiction

    Returns:
        dict contenant : total_samples, total_attacks, total_normal,
        processing_time, avg_pred_time, attack_ratio, normal_ratio
    """
    start_time = time.time()
    predictions = pred_func(data)
    end_time = time.time()

    total_samples = len(predictions)
    total_attacks = sum(predictions)          # 1 = attaque
    total_normal = total_samples - total_attacks

    processing_time = end_time - start_time
    avg_pred_time = processing_time / total_samples if total_samples > 0 else 0
    attack_ratio = total_attacks / total_samples if total_samples > 0 else 0
    normal_ratio = total_normal / total_samples if total_samples > 0 else 0

    return {
        "total_samples": total_samples,
        "total_attacks": total_attacks,
        "total_normal": total_normal,
        "processing_time_sec": processing_time,
        "avg_pred_time_sec": avg_pred_time,
        "attack_ratio": attack_ratio,
        "normal_ratio": normal_ratio,
        "predictions": predictions
    }