diff options
| author | Loic Guegan <manzerbredes@mailbox.org> | 2023-02-13 19:40:51 +0100 |
|---|---|---|
| committer | Loic Guegan <manzerbredes@mailbox.org> | 2023-02-13 19:40:51 +0100 |
| commit | 4c1f0864049de29c8d8efb5ea126fceb604c1750 (patch) | |
| tree | 8167b3953c12883748d4794ce930eb0ddacb4610 /analysis/days.R | |
| parent | dc576537434ff6e10639e144f0be935ebc9afbc2 (diff) | |
Update
Diffstat (limited to 'analysis/days.R')
| -rw-r--r-- | analysis/days.R | 38 |
1 files changed, 20 insertions, 18 deletions
diff --git a/analysis/days.R b/analysis/days.R index deed14d..93d478e 100644 --- a/analysis/days.R +++ b/analysis/days.R @@ -53,7 +53,7 @@ F1_Score2=function(truth, pred){ } ## Down scale data -reduce_days=function(data,every=6){data%>%filter(((days/3) %% every) == 0)} +reduce_days=function(data,every=6){data%>%filter(((days/4) %% every) == 0)} ## GGPlot Theme th = function(option="D") {list(theme_bw(), @@ -83,7 +83,7 @@ generate_accuracy_for=function(ignore_hint=FALSE,seed_max=200,attempts_max=2,wrl ## KNN analysis knn_cont_table=table(knn_predictions,test_set$simkey) knn_accuracy=(sum(diag(knn_cont_table)/sum(rowSums(knn_cont_table)))) - print(knn_accuracy) + #print(knn_accuracy) knn_prop_table=round(prop.table(knn_cont_table),digits=2) knn_f1_score=F1_Score2(test_set$simkey,knn_predictions) @@ -111,7 +111,7 @@ generate_accuracy_for=function(ignore_hint=FALSE,seed_max=200,attempts_max=2,wrl } -generate_accuracy_energy = function(wireless,wakeupfor,steps=1, accuracy=10,ignore_hint=TRUE){ +generate_accuracy_energy = function(wireless,wakeupfor,steps=1, accuracy=10,ignore_hint=FALSE){ ## Setup variables npolicies=4 data_seed_for_energy=data_seed%>%ungroup() @@ -133,13 +133,13 @@ generate_accuracy_energy = function(wireless,wakeupfor,steps=1, accuracy=10,igno ########## Generate accuracy, energy, F1-Score and coverage data ########## -if(T){ # Toggle to train +if(F){ # Toggle to train lora180=generate_accuracy_energy("lora",180) lora60=generate_accuracy_energy("lora",60) nbiot60=generate_accuracy_energy("nbiot",60) nbiot180=generate_accuracy_energy("nbiot",180) accuracy=rbind(lora60$accuracy,lora180$accuracy,nbiot60$accuracy,nbiot180$accuracy) - coverage=data_seed%>%filter(simkey!="hint")%>%group_by(wireless,wakeupfor,seed)%>%summarize(coverage=sum(coverage))%>%mutate(days=seed*3)%>%filter(days %in% !!lora60$energy$days)%>%select(-seed) + coverage=data_seed%>%group_by(wireless,wakeupfor,seed)%>%summarize(coverage=sum(coverage))%>%mutate(days=seed*4)%>%filter(days %in% !!lora60$energy$days)%>%select(-seed) energy=rbind(lora60$energy, lora180$energy, nbiot60$energy, @@ -170,13 +170,14 @@ learning_curves=accuracy%>%group_by(wireless,wakeupfor,days,model)%>% ggplot(data=learning_curves%>%mutate(model=ifelse(model=="knn","KNN","DT")),aes(linetype=model))+ geom_line(aes(days/30,mean_f1_baseline,color="Baseline"),size=1.2)+ geom_line(aes(days/30,mean_f1_extended,color="Extended"),size=1.2)+ + geom_line(aes(days/30,mean_f1_hint,color="Hint"),size=1.2)+ geom_line(aes(days/30,mean_f1_hintandextended,color="Hintandextended"),size=1.2)+labs(color="Classes colors",linetype="Model")+ facet_wrap(~wireless+wakeupfor)+ scale_x_continuous(breaks = seq(0, max(learning_curves$days/30)))+ scale_y_continuous(breaks = seq(0, 1, by = 0.1))+ th()+ theme(panel.grid.minor = element_blank(), - legend.position = c(0.9,0.74), + legend.position = c(0.9,0.72), legend.margin = margin(2,4,2,4), legend.spacing=unit(-0.2,"cm"), legend.box.margin=margin(1,1,1,1))+ @@ -198,21 +199,22 @@ ggsave("figures/months_accuracy.pdf",width=8.5,height=6) ########## Energy and delta with raw policies ########## +npolicies=4 ## First we extended the number of seed to cover the entire duration of the training data_seed_energy=rbind(data_seed, data_seed%>%mutate(seed=seed+200), data_seed%>%mutate(seed=seed+400), data_seed%>%mutate(seed=seed+600)) # Almost same as if each experiment run 4 times more seed seed -## Compute the cumulative energy of each policies in each configuration accross the 4*200 days +## Compute the cumulative energy of each policies in each configuration accross the $npolicies*200 days data_seed_energy=data_seed_energy%>%group_by(wireless,wakeupfor,simkey)%>%mutate(energy=cumsum(energy),setup=paste0(wireless," ",wakeupfor,"s"),days=seed) -## Now sum coverage of each 3 days (like in the energy data frame) -data_seed_energy=data_seed_energy%>%group_by(wireless,wakeupfor,simkey)%>%mutate(grp=ceiling(days/3))%>%group_by(wireless,wakeupfor,simkey,grp)%>%mutate(coverage=cumsum(coverage))%>%filter(days%%3==0) +## Now sum coverage of each $npolicies days (like in the energy data frame) +data_seed_energy=data_seed_energy%>%group_by(wireless,wakeupfor,simkey)%>%mutate(grp=ceiling(days/npolicies))%>%group_by(wireless,wakeupfor,simkey,grp)%>%mutate(coverage=cumsum(coverage))%>%filter(days%%npolicies==0) ## Now filter the data data_seed_energy=data_seed_energy%>%filter(days %in% !!energy$days) ## Compute the delta data energy_coverage_delta=data_seed_energy%>% full_join(energy,by=c("days","wireless","wakeupfor"),suffix=c("","_training")) -energy_coverage_delta=energy_coverage_delta%>%group_by(wireless,wakeupfor)%>%summarize(delta_energy=energy-energy_training,simkey=simkey,days=days,delta_coverage=(coverage-coverage_training)/3,coverage=coverage/3,coverage_training=coverage_training/3) # delta_coverage divide by 3 because we want the average per day (coverage is measure every 3 days (round-robin of 3 policies)) +energy_coverage_delta=energy_coverage_delta%>%group_by(wireless,wakeupfor)%>%summarize(delta_energy=energy-energy_training,simkey=simkey,days=days,delta_coverage=(coverage-coverage_training)/npolicies,coverage=coverage/npolicies,coverage_training=coverage_training/npolicies) # delta_coverage divide by $npolicies because we want the average per day (coverage is measure every $npolicies days (round-robin of $npolicies policies)) write("wireless,wakeupfor,policy,slope,intercept,delta_coverage,coverage,coverage_training,latex","figures/delta_energy_coverage.csv") @@ -231,7 +233,7 @@ energy_coverage_delta%>%group_by(wireless,wakeupfor,simkey)%>%group_walk(functio ggplot(energy_coverage_delta,aes(days/30,delta_energy/1e3,color=simkey,shape=simkey))+ geom_line(size=1.2)+ylab(TeX("Delta in $E_{total}$ (kJ)"))+xlab("Training duration (months)")+ facet_wrap(~wireless+wakeupfor,scale="free")+ - th()+theme(legend.position=c(0.61,0.95))+labs(color="Classes colors") + th()+theme(legend.position=c(0.61,0.97))+labs(color="Classes colors") ggsave("figures/delta_energy_training.pdf",height=6,width=10) ggplot(energy_coverage_delta,aes(days/30,delta_coverage,color=simkey))+ @@ -240,13 +242,13 @@ ggplot(energy_coverage_delta,aes(days/30,delta_coverage,color=simkey))+ th()+theme(legend.position="top")+labs(color="Classes colors") ggsave("figures/delta_coverage_training.pdf",width=9) -ggplot(data=energy,aes(days/30,energy/1e6,group=setup,fill=setup))+ - geom_bar(stat="identity",position="dodge")+ - labs(fill="Wireless and Uptime")+ - scale_x_continuous(breaks = seq(0, max(energy$days/30)))+ - xlab("Training duration (months)")+ylab("Energy consumption (MJ)")+ - th()+theme(legend.position=c(0.12,0.75)) -ggsave("figures/days_energy.pdf",width=8.5,height=4) +## ggplot(data=energy,aes(days/30,energy/1e6,group=setup,fill=setup))+ +## geom_bar(stat="identity",position="dodge")+ +## labs(fill="Wireless and Uptime")+ +## scale_x_continuous(breaks = seq(0, max(energy$days/30)))+ +## xlab("Training duration (months)")+ylab("Energy consumption (MJ)")+ +## th()+theme(legend.position=c(0.12,0.75)) +## ggsave("figures/days_energy.pdf",width=8.5,height=4) |
