Guest User

Untitled

a guest
Sep 20th, 2018
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.88 KB | None | 0 0
  1. def plot_by_group(yhat_all, val_Y_all, increment=50, metric='abs'):
  2.  
  3. # Either plot absolute error by group or directional error by group.
  4. if metric == 'abs':
  5. err = np.abs((yhat_all - val_Y_all) / val_Y_all)
  6. title = "Absolute Percent Errors by house sales group"
  7. else:
  8. err = (yhat_all - val_Y_all) / val_Y_all
  9. title = "Raw Percent Errors by house sales group"
  10.  
  11. # group by distances of increment
  12. true_bin = ((val_Y_all // increment) + 1) * increment
  13. err_bins = {}
  14.  
  15. # Place errors into appropriate bins
  16. for pe, tb in zip(err, true_bin):
  17. if not tb in err_bins.keys():
  18. err_bins[tb] = []
  19. err_bins[tb] += [pe * 100]
  20.  
  21. # Sort keys (bins) and organize error lists
  22. err_list = [err_bins[key] for key in sorted(err_bins)]
  23.  
  24. #Calculate means and Interquartile ranges
  25. medians = [np.mean(err_list[idx]) for idx in range(len(err_list))]
  26. q25s = [np.percentile(err_list[idx], 25) for idx in range(len(err_list))]
  27. q75s = [np.percentile(err_list[idx], 75) for idx in range(len(err_list))]
  28.  
  29. keys = sorted(err_bins)
  30.  
  31. # create blank graph and graph the axis variable
  32. _, ax = plt.subplots(figsize=(15, 5))
  33.  
  34. # label axes
  35. ax.set(
  36. xlabel='true time to sell house',
  37. ylabel='IQR of percent error by group',
  38. title=title)
  39.  
  40. # Add std deviation bars to the plot
  41. ax.errorbar(
  42. keys,
  43. medians,
  44. yerr=[[medians[i] - q25s[i] for i in range(len(medians))],
  45. [q75s[i] - medians[i] for i in range(len(medians))]],
  46. fmt='-o')
  47.  
  48. # set where xticks should occur
  49. ax.set_xticks(keys)
  50.  
  51. # Label the x-ticks
  52. xticks = [
  53. str(key - 50)[:-2] + ' to ' + str(key)[:-2] + '\n' + 'size group:' +
  54. str(len(err_list[idx])) for idx, key in enumerate(sorted(err_bins))
  55. ]
  56. ax.set_xticklabels(xticks)
  57.  
  58. plt.show()
Add Comment
Please, Sign In to add comment