Advertisement
Guest User

Untitled

a guest
May 22nd, 2019
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.11 KB | None | 0 0
  1. def gioco_delle_tre_carte(df):
  2. df['95_mean'] = df['95']['mean']
  3. df['95_std'] = df['95']['std']
  4. return df
  5.  
  6. def pennella(df, ax, color, multiplicator):
  7. # Define upper and lower bounds for shaded variation
  8. lower_bound = df['95_mean'] + multiplicator * df['95_std'] * - 1
  9. upper_bound = df['95_mean'] + multiplicator * df['95_std']
  10. ax.fill_between(df['mean'], lower_bound, upper_bound, facecolor=color, alpha=0.2)
  11.  
  12.  
  13. #############################
  14.  
  15. # Sparsified best combination of k and learning rate for each lambda
  16.  
  17. spar_mem_group = sparsified_mem.groupby(by=['mean', 'learning_rate', 'take'], as_index=False)
  18. spar_mem_group = spar_mem_group.agg({'95': ['mean', 'std']}).reset_index()
  19. # gioco delle tre carte
  20. spar_mem_group = gioco_delle_tre_carte(spar_mem_group)
  21. spar_mem_group = spar_mem_group.drop(['95'], axis=1)
  22.  
  23. best_spar_mem = spar_mem_group.loc[spar_mem_group.reset_index().groupby(['mean'])['95_mean'].idxmin()]
  24. best_spar_mem
  25. #spar_mem_group
  26.  
  27.  
  28. # Sparsified best combination of k and learning rate for each lambda
  29.  
  30. spar_nomem_group = sparsified_nomem.groupby(by=['mean', 'learning_rate', 'take'], as_index=False)
  31. spar_nomem_group = spar_nomem_group.agg({'95': ['mean', 'std']}).reset_index()
  32. # gioco delle tre carte
  33. spar_nomem_group = gioco_delle_tre_carte(spar_nomem_group)
  34. spar_nomem_group = spar_nomem_group.drop(['95'], axis=1)
  35.  
  36. best_spar_nomem = spar_nomem_group.loc[spar_nomem_group.reset_index().groupby(['mean'])['95_mean'].idxmin()]
  37. best_spar_nomem
  38. #spar_mem_group
  39.  
  40.  
  41. # Vanilla best learning rate
  42. vanilla = cleaned_df[cleaned_df['configuration']=='AsyncPS']
  43. vanilla = vanilla.drop([1017,2200])
  44. # a=vanilla[vanilla['mean']==10]
  45. # a=a[a['95']==100000]
  46. # display(a)
  47. group_lr_vanilla = vanilla.groupby(by=['learning_rate'], as_index=False)['95'].mean()
  48. best_lr = group_lr_vanilla.loc[group_lr_vanilla.reset_index()['95'].idxmin()][0]
  49. print(best_lr)
  50. best_lr_vanilla = vanilla[vanilla['learning_rate']==best_lr]
  51. #best_lr_vanilla = best_lr_vanilla.groupby('mean', as_index=False)['95'].mean()
  52. best_lr_vanilla = best_lr_vanilla.groupby(by=['mean']).agg({'95': ['mean', 'std']}).reset_index()
  53. best_lr_vanilla['95_mean'] = best_lr_vanilla['95']['mean']
  54. best_lr_vanilla['95_std'] = best_lr_vanilla['95']['std']
  55. best_lr_vanilla = best_lr_vanilla.drop('95', axis=1)
  56. best_lr_vanilla
  57.  
  58.  
  59.  
  60. # Byzantine best learning rate for each lambda
  61. byzantine = cleaned_df[cleaned_df['configuration']=='ByzantinePS']
  62. group_byz = byzantine.groupby(by=['mean', 'learning_rate']).agg({'95': ['mean', 'std']}).reset_index()
  63. #group_byz = byzantine.groupby(by=['mean', 'learning_rate']).agg({'95':'mean'}).reset_index()
  64.  
  65. group_byz['95_mean'] = group_byz['95']['mean']
  66. group_byz['95_std'] = group_byz['95']['std']
  67. group_byz = group_byz.drop('95', axis=1)
  68. group_byz
  69. #['mean']['95']['mean']
  70. #group_byz.groupby(['mean'])['95']
  71. best_byz = group_byz.loc[group_byz.reset_index().groupby(['mean'])['95_mean'].idxmin()]
  72. best_byz
  73.  
  74. fig, ax = plt.subplots(figsize=(15,10))
  75. multiplicator = (1./10.)
  76. colors = ['green', 'blue', 'orange', 'red']
  77.  
  78. sns.lineplot(x='mean', y='95_mean', data=best_spar_mem, label=ps[0], color=colors[0])
  79. pennella(best_spar_mem, ax, colors[0], multiplicator)
  80.  
  81. sns.lineplot(x='mean', y='95_mean', data=best_spar_nomem, label=ps[1], color=colors[1])
  82. pennella(best_spar_nomem, ax, colors[1], multiplicator)
  83.  
  84. sns.lineplot(x='mean', y='95_mean', data=best_lr_vanilla, label=ps[2], color=colors[2])
  85. pennella(best_lr_vanilla, ax, colors[2], multiplicator)
  86.  
  87. sns.lineplot(x='mean', y='95_mean', data=best_byz, label=ps[3], color=colors[3])
  88. pennella(best_byz, ax, colors[3], multiplicator)
  89. # Define upper and lower bounds for shaded variation
  90. # lower_bound_byz = best_byz['95_mean'] + multiplicator * best_byz['95_std'] * - 1
  91. # upper_bound_byz = best_byz['95_mean'] + multiplicator * best_byz['95_std']
  92. # ax.fill_between(best_byz['mean'], lower_bound_byz, upper_bound_byz, facecolor='red', alpha=0.5)
  93.  
  94. # sns.lineplot(x='mean', y='90', data=best_local, label=ps[4])
  95. # plt.yscale('log')
  96. plt.xscale('log')
  97. plt.xlabel('lambda')
  98. plt.ylabel('# updates')
  99. plt.title('# Updates to reach 95% accuracy')
  100. plt.show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement