File size: 1,479 Bytes
1d6bb40
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
import pandas as pd
import joblib

from sklearn.model_selection import train_test_split
from src.config import BASE_DATASET_PATH, META_MODEL_PATH


# Load dataset
df = pd.read_csv(BASE_DATASET_PATH)


# Features
feature_columns = [
    "vader_pred",
    "vader_score",
    "lr_pred",
    "lr_confidence",
    "bert_pred",
    "bert_confidence",
    "bert_entropy",
    "vader_lr_disagreement",
    "lr_bert_disagreement",
    "vader_bert_disagreement",
    "has_negative_intensifier"
]


# Target
y = df["bert_failed"]


# Split while preserving original rows
train_df, test_df = train_test_split(
    df,
    test_size=0.2,
    random_state=42
)


# Test features
X_test = test_df[feature_columns]


# True labels
y_test = test_df["bert_failed"]


# Load model
meta_model = joblib.load(META_MODEL_PATH)


# Predictions
y_pred = meta_model.predict(X_test)


print("\nCorrectly Predicted Failures:\n")


count = 0


for i in range(len(y_test)):

    if y_test.iloc[i] == 1 and y_pred[i] == 1:

        row = test_df.iloc[i]

        print("=" * 60)

        print("TEXT:\n")

        print(row["text"])

        print("\nTRUE LABEL:", row["true_label"])

        print("BERT PREDICTION:", row["bert_pred"])

        print("BERT CONFIDENCE:",
              row["bert_confidence"])

        print("BERT ENTROPY:",
              row["bert_entropy"])

        print("META-MODEL WARNING: FAILURE DETECTED")

        print("=" * 60)

        count += 1

    if count == 5:
        break