Advertisement
Filip_Markoski

Python Visualize Dictionary

Jul 3rd, 2020
2,032
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.58 KB | None | 0 0
  1. def calculate_classification_metrics(test_targets, predictions) -> dict:
  2.     """Calculation of accuracy score, F1 micro and F1 macro"""
  3.     results = {
  4.         'accuracy': accuracy_score(test_targets, predictions),
  5.         'f1-micro': f1_score(test_targets, predictions, average="micro"),  # good for unbalanced classes
  6.         'f1-macro': f1_score(test_targets, predictions, average="macro"),
  7.         'precision': precision_score(test_targets, predictions, average="weighted"),
  8.         'recall': recall_score(test_targets, predictions, average="weighted"),
  9.     }
  10.     # 'accuracy', 'f1-micro', 'f1-macro', 'precision', 'recall'
  11.     print(f"\tAccuracy score: {results['accuracy']:.3f}")
  12.     print(f"\tF1-micro: {results['f1-micro']:.3f}")
  13.     print(f"\tF1-macro: {results['f1-macro']:.3f}")
  14.     print(f"\tPrecision score: {results['precision']:.3f}")
  15.     print(f"\tRecall score: {results['recall']:.3f}")
  16.  
  17.     return results
  18.  
  19. def feature_importances(model, feature_list: list, importance_limit: float = 0.05, display_top_n: int = 20,
  20.                         display_graph=True):
  21.     importances = list(model.feature_importances_)  # List of tuples with variable and importance
  22.  
  23.     # Sort the feature importances by most important first
  24.     feature_importances = [(feature, round(importance, 2)) for feature, importance in
  25.                            zip(feature_list, importances)]
  26.     feature_importances = sorted(feature_importances, key=lambda x: x[1],
  27.                                  reverse=True)  # Print out the feature and importances
  28.  
  29.     features_to_keep = []
  30.     for i, pair in zip(range(display_top_n), feature_importances):
  31.         feature, importance = pair
  32.         if importance < importance_limit:
  33.             break
  34.         features_to_keep.append(feature)
  35.         print(f'{i + 1:3}. Feature: {feature:20} Importance: {importance}')
  36.  
  37.     print(features_to_keep)
  38.  
  39.     if display_graph:
  40.         features = list()
  41.         importances = list()
  42.  
  43.         for feature, importance in feature_importances[:display_top_n]:
  44.             features.append(feature)
  45.             importances.append(importance)
  46.  
  47.         # convert to pd.DataFrame
  48.         sns.set(style='darkgrid')
  49.         plt.plot(features, importances)
  50.         plt.xticks(rotation=90)
  51.         plt.show()
  52.     return features_to_keep
  53.  
  54.  
  55. def visualize_dict(D, sort=True):
  56.     if sort:
  57.         D = {k: v for k, v in sorted(D.items(),
  58.                                      key=lambda item: item[1])}
  59.  
  60.     df = pd.DataFrame(data=D, index=list(D.keys()))
  61.     ax = sns.barplot(data=df)
  62.  
  63.     # adding the text labels
  64.     rects = ax.patches
  65.     labels = list(D.values())
  66.     for rect, label in zip(rects, labels):
  67.         height = rect.get_height()
  68.         ax.text(rect.get_x() + rect.get_width() / 2,
  69.                 height,
  70.                 label,
  71.                 ha='center',
  72.                 va='bottom')
  73.  
  74.     plt.show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement