Submissions will be evaluated based on the **[Weighted F1 Score](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.f1_score.html)**. This score accounts for both **precision** and **recall** for each class, with weights proportional to the number of true instances in each class. 

### **1. Weighted F1 Score**  
The **Weighted F1 Score** is an aggregate metric that balances the trade-off between precision and recall while considering class imbalances. It is calculated as:

$$
\text{Weighted F1 Score} = \sum_{i=1}^{n} \left( \frac{N_i}{N} \cdot F1_i \right)
$$

Where:  
- \( N_i \) = Number of true instances of class \( i \).  
- \( N \) = Total number of true instances across all classes.  
- \( F1_i \) = F1 Score for class \( i \).

### **2. F1 Score**  
The **F1 Score** is the harmonic mean of precision and recall. It’s used when you need to balance both false positives and false negatives. It is calculated as:

$$
F1 = 2 \cdot \frac{\text{Precision} \cdot \text{Recall}}{\text{Precision} + \text{Recall}}
$$

### **3. Precision**  
**Precision** measures the accuracy of the positive predictions. It is calculated as the ratio of true positives to the sum of true positives and false positives:

$$
\text{Precision} = \frac{\text{True Positives}}{\text{True Positives} + \text{False Positives}}
$$

### **4. Recall**  
**Recall** measures the ability to identify all positive instances. It is calculated as the ratio of true positives to the sum of true positives and false negatives:

$$
\text{Recall} = \frac{\text{True Positives}}{\text{True Positives} + \text{False Negatives}}
$$

---

### **Submission File**  
For each row in the test set, you are required to predict the **customer_experience** for that transaction. Your submission file should follow the format below:

```
id,customer_experience
0,good
1,neutral
2,bad
```

Ensure that your predictions align with the possible target classes: `good`, `neutral`, and `bad`. Any missing or invalid entries will negatively impact your score.