53 lines
1.8 KiB
Python
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() |