Help me een Matplotlib-visualisatie maken voor het vergelijken van prestatie-indicatoren tussen verschillende modellen.
description
Door deze prompt te gebruiken, kunnen gebruikers de prestaties van modellen effectief vergelijken, trends identificeren en geïnformeerde beslissingen nemen op basis van visuele inzichten. De aanpassingsopties zorgen ervoor dat de visualisatie aansluit bij hun specifieke behoeften.
prompt
try_prompt
Ik wil de prestatie-indicatoren van mijn modellen visualiseren: {{model_namen}}. De belangrijkste indicatoren die ik wil vergelijken zijn {{indicatoren}} over de testdataset beschreven als {{dataset_ ... more
generate_helper
...
tags
ai_answers
provider: openai
model: gpt-4.1-nano
Een geschikte grafiek voor het vergelijken van de prestatie-indicatoren (Precisie en Recall) van verschillende modellen is een grouped bar chart (gegroepeerde staafdiagram). Hiermee kunnen de verschillende modellen naast elkaar worden weergegeven voor elke metric, waardoor de vergelijking duidelijk wordt.
Hier is een voorbeeld van Python-code die een dergelijke grafiek maakt met Matplotlib en Seaborn, inclusief opties om kleuren, labels en stijlen aan te passen:
```python
import matplotlib.pyplot as plt
import numpy as np
# Voorbeeldgegevens
modellen = ['Lineaire regressie', 'Beslissingsboom', 'Random Forest']
precisie = [0.85, 0.90, 0.95] # vervang door je echte data
recall = [0.80, 0.88, 0.92] # vervang door je echte data
# Instellingen voor de plot
breedte = 0.35 # breedte van de staven
x = np.arange(len(modellen))
# Kleuren aanpassen
kleur_precisie = '#1f77b4' # blauw
kleur_recall = '#ff7f0e' # oranje
fig, ax = plt.subplots(figsize=(10, 6))
# Staven tekenen
bars_precisie = ax.bar(x - breedte/2, precisie, breedte, label='Precisie', color=kleur_precisie)
bars_recall = ax.bar(x + breedte/2, recall, breedte, label='Recall', color=kleur_recall)
# Labels en titel aanpassen
ax.set_xlabel('Modellen', fontsize=14)
ax.set_ylabel('Score', fontsize=14)
ax.set_title('Vergelijking van Prestatie-indicatoren per Model', fontsize=16)
ax.set_xticks(x)
ax.set_xticklabels(modellen, rotation=15, ha='right')
# Legenda toevoegen
ax.legend()
# Optioneel: waardes boven de staven tonen
for rect in bars_precisie + bars_recall:
height = rect.get_height()
ax.annotate(f'{height:.2f}',
xy=(rect.get_x() + rect.get_width() / 2, height),
xytext=(0, 3),
textcoords='offset points',
ha='center', va='bottom', fontsize=10)
# Stijl aanpassen (optioneel)
plt.style.use('ggplot')
plt.tight_layout()
plt.show()
```
**Aanpassingen:**
- Vervang de lijsten `precisie` en `recall` door je eigen gemeten waarden.
- Pas de kleuren aan door de hex-codes te wijzigen.
- Je kunt de labels verder aanpassen in de `set_xlabel`, `set_ylabel` en `set_title` functies.
- Voor meer stijlaanpassingen kun je de `plt.style.use()` aanpassen of andere styling-opties toevoegen.
Deze code geeft je een overzichtelijke vergelijking van de twee metrics per model in één grafiek.
provider: deepseek
model: deepseek-chat
Voor het vergelijken van prestatie-indicatoren (Precisie en Recall) van Lineaire Regressie, Beslissingsboom en Random Forest op de Iris dataset is een **gestapelde staafdiagram** of **groepstaafdiagram** het meest geschikt. Hieronder vind je Python-code die deze vergelijking duidelijk weergeeft met aanpasbare kleuren, labels en stijlen.
```python
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import precision_score, recall_score
from sklearn.preprocessing import StandardScaler
# Laad de Iris dataset
iris = load_iris()
X, y = iris.data, iris.target
# Veronderstel binaire classificatie voor duidelijkheid (bijv. klasse 0 vs rest)
# Voor multi-class zouden we macro/micro gemiddelden kunnen gebruiken
y_binary = (y == 0).astype(int)
# Split de dataset
X_train, X_test, y_train, y_test = train_test_split(X, y_binary, test_size=0.3, random_state=42)
# Standardiseer features voor lineaire regressie
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
# Initialiseer modellen
models = {
'Lineaire Regressie': LogisticRegression(),
'Beslissingsboom': DecisionTreeClassifier(),
'Random Forest': RandomForestClassifier()
}
# Train modellen en verzamel metrics
results = {}
for name, model in models.items():
if name == 'Lineaire Regressie':
model.fit(X_train_scaled, y_train)
y_pred = model.predict(X_test_scaled)
else:
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
precision = precision_score(y_test, y_pred, zero_division=0)
recall = recall_score(y_test, y_pred, zero_division=0)
results[name] = {'Precisie': precision, 'Recall': recall}
# Visualisatie met aanpasbare opties
def visualize_metrics(results, kleuren=None, labels=None, stijl='default'):
"""
Visualiseer Precisie en Recall voor verschillende modellen
Parameters:
results - Dictionary met modelresultaten
kleuren - Lijst met kleuren voor Precisie en Recall [optioneel]
labels - Aangepaste labels voor de metriek [optioneel]
stijl - Matplotlib stijl (bijv. 'default', 'seaborn', 'ggplot')
"""
# Stel stijl in
plt.style.use(stijl)
# Standaard kleuren indien niet opgegeven
if kleuren is None:
kleuren = ['#2E86AB', '#A23B72'] # Blauw voor Precisie, Roze voor Recall
# Standaard labels indien niet opgegeven
if labels is None:
labels = ['Precisie', 'Recall']
model_namen = list(results.keys())
precisie_waarden = [results[model]['Precisie'] for model in model_namen]
recall_waarden = [results[model]['Recall'] for model in model_namen]
x_pos = np.arange(len(model_namen))
breedte = 0.35
fig, ax = plt.subplots(figsize=(10, 6))
# Maak staafdiagrammen
bars1 = ax.bar(x_pos - breedte/2, precisie_waarden, breedte,
label=labels[0], color=kleuren[0], alpha=0.8)
bars2 = ax.bar(x_pos + breedte/2, recall_waarden, breedte,
label=labels[1], color=kleuren[1], alpha=0.8)
# Pas labels en titel aan
ax.set_xlabel('Classificatie Modellen', fontsize=12, fontweight='bold')
ax.set_ylabel('Score Waarde', fontsize=12, fontweight='bold')
ax.set_title('Vergelijking Precisie en Recall voor Verschillende Modellen\n(Iris Dataset)',
fontsize=14, fontweight='bold')
ax.set_xticks(x_pos)
ax.set_xticklabels(model_namen)
ax.legend()
ax.grid(True, alpha=0.3)
# Voeg waarden toe boven de staven
def autolabel(bars):
for bar in bars:
height = bar.get_height()
ax.annotate(f'{height:.3f}',
xy=(bar.get_x() + bar.get_width() / 2, height),
xytext=(0, 3),
textcoords="offset points",
ha='center', va='bottom', fontweight='bold')
autolabel(bars1)
autolabel(bars2)
plt.tight_layout()
plt.show()
# Gebruik de visualisatiefunctie met standaard instellingen
print("Standaard visualisatie:")
visualize_metrics(results)
# Aangepaste visualisatie met verschillende kleuren en labels
print("\nAangepaste visualisatie:")
aangepaste_kleuren = ['#1F77B4', '#FF7F0E'] # Blauw en oranje
aangepaste_labels = ['Nauwkeurigheid', 'Volledigheid']
visualize_metrics(
results,
kleuren=aangepaste_kleuren,
labels=aangepaste_labels,
stijl='seaborn' # Andere opties: 'ggplot', 'fivethirtyeight', 'dark_background'
)
# Alternatieve visualisatie: Gestapelde staafdiagram
def visualize_gestapeld(results, kleuren=None, stijl='default'):
"""
Gestapelde staafdiagram voor totaaloverzicht
"""
plt.style.use(stijl)
if kleuren is None:
kleuren = ['#2E86AB', '#A23B72']
model_namen = list(results.keys())
precisie_waarden = [results[model]['Precisie'] for model in model_namen]
recall_waarden = [results[model]['Recall'] for model in model_namen]
fig, ax = plt.subplots(figsize=(10, 6))
ax.bar(model_namen, precisie_waarden, label='Precisie', color=kleuren[0])
ax.bar(model_namen, recall_waarden, bottom=precisie_waarden,
label='Recall', color=kleuren[1])
ax.set_ylabel('Score Waarde')
ax.set_title('Gestapelde Precisie en Recall Vergelijking')
ax.legend()
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()
print("\nGestapelde visualisatie:")
visualize_gestapeld(results, kleuren=aangepaste_kleuren)
```
**Belangrijke kenmerken van deze code:**
1. **Flexibele visualisatie**: Twee soorten diagrammen (groepsgewijs en gestapeld)
2. **Aanpasbare kleuren**: Pas kleuren aan via de `kleuren` parameter
3. **Aanpasbare labels**: Verander metriek-namen via `labels`
4. **Stijl opties**: Verschillende matplotlib stijlen beschikbaar
5. **Duidelijke annotatie**: Waarden worden boven de staven getoond
**Aanbevelingen voor gebruik:**
- Gebruik de groepsgeweiste staafdiagram voor directe vergelijking
- Gebruik gestapelde staafdiagram voor totaaloverzicht
- Experimenteer met verschillende kleurencombinaties voor betere leesbaarheid
- Pas de stijl aan naar jouw voorkeuren of huisstijl
De code is modulair opgebouwd zodat je eenvoudig aanpassingen kunt maken aan kleuren, labels en stijlen volgens jouw specifieke behoeften.

