Files

53 lines
1.8 KiB
Python

# Erstelle nur das farbcodierte Stabilitätsdiagramm für die Top-5 Features
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.patches import Patch
# Anzahl der anzuzeigenden Features (Top-N mit höchster Varianz)
num_features_to_show = 5 # Top-5 Features
# Sortiere die Features nach Varianz (absteigend)
sorted_features = sorted(feature_variances.items(), key=lambda x: x[1], reverse=True)
# Beschränke auf die Top-N Features
sorted_features = sorted_features[:num_features_to_show]
features = [item[0] for item in sorted_features]
variances = [item[1] for item in sorted_features]
# Definiere Schwellenwerte für die Farbkodierung
low_threshold = 0.0001
medium_threshold = 0.001
# Farbkodierung basierend auf Varianzwerten
colors = []
for v in variances:
if v < low_threshold:
colors.append('green') # Niedrige Varianz - sehr stabil
elif v < medium_threshold:
colors.append('orange') # Mittlere Varianz - mäßig stabil
else:
colors.append('red') # Hohe Varianz - instabil
# Erstelle das Balkendiagramm mit Farbkodierung
plt.figure(figsize=(10, 6))
bars = plt.barh(features, variances, color=colors)
# Füge Werte am Ende der Balken hinzu
for i, v in enumerate(variances):
plt.text(v + 0.00001, i, f"{v:.6f}", va='center')
# Füge eine Legende hinzu
legend_elements = [
Patch(facecolor='green', label='Sehr stabil (< 0.0001)'),
Patch(facecolor='orange', label='Mäßig stabil (< 0.001)'),
Patch(facecolor='red', label='Instabil (≥ 0.001)')
]
plt.legend(handles=legend_elements, loc='lower right')
plt.xlabel('Varianz')
plt.title('Stabilität der Top-5 LIME-Features')
plt.grid(axis='x', linestyle='--', alpha=0.7)
plt.tight_layout()
# Speichere die Abbildung
plt.savefig('output/Lime_Varianz_Features.png', dpi=300)
plt.show()