cesar 2 months ago
parent
commit
fd58271390

+ 7832
- 0
data/2025-02-14_5_.csv
File diff suppressed because it is too large
View File


+ 7833
- 0
data/2025-02-15_5_.csv
File diff suppressed because it is too large
View File


+ 7829
- 0
data/2025-02-16_5_.csv
File diff suppressed because it is too large
View File


BIN
paper/Adapt25_Paper_Template_updated_AKO_v1.docx View File


BIN
paper/drawing-figv1_3.png View File


+ 70
- 0
paper/drawing-figv1_3.svg
File diff suppressed because it is too large
View File


BIN
paper/figv1_1.png View File


BIN
paper/figv1_2.png View File


BIN
paper/figv1_3.png View File


+ 25
- 5
plotFScore_v5.py View File

3
 import matplotlib.pyplot as plt
3
 import matplotlib.pyplot as plt
4
 import numpy as np
4
 import numpy as np
5
 
5
 
6
-F={}
7
-for i in range(4,29,4):
6
+F={}   # FScore in stationary phase
7
+      # first index:  time series length, second index: features considered 
8
+for i in range(4,27,4):
8
     F[i]=np.ones(6)
9
     F[i]=np.ones(6)
9
-for i in range(4,29,4):
10
-    for j in range(6):
11
-        F[i][j]=np.random.uniform(0.8,1)
10
+#for i in range(4,27,4):
11
+#    for j in range(6):
12
+#        F[i][j]=np.random.uniform(0.8,1)
12
 
13
 
14
+F[4]= [0.99,0.99,0.97,0.96,0.98,0.9  ]
15
+F[8]= [1,1,0.99,0.98,0.99,0.96  ]
16
+F[12]=[1,1,0.99,0.96,0.99, 0.65 ]
17
+F[16]=[1,1,1,0.98,0.99 ,0.67 ]
18
+F[20]=[1,1,1,0.98 ,1, 0.67 ]
19
+F[24]=[1,1,1,1,1, 0.66  ]
20
+
21
+
22
+plt.rcParams.update({'font.size': 16})
23
+fig, axes = plt.subplots( nrows=1, ncols=1, figsize=(15, 6), dpi=80, facecolor="w", edgecolor="k",sharex=True)
24
+width=0.1
25
+for i in range(4,27,4):
26
+    axes.bar(np.arange(0,6)+(i/4-3)*width , F[i], width*0.8, label="$ns=$"+str(i), align="center")
27
+axes.set_ylim(0.6,1.01)
28
+axes.legend(loc='center right')
29
+axes.set_ylabel("F1-Score")
30
+axes.set_xticks([0,1,2,3,4,5],['$T_{evap},T_{cond}$ \n $T_{air},P_{elec}$','$T_{evap},T_{cond},T_{air}$','$T_{evap},T_{air},P_{elec}$','$T_{air},P_{elec}$','$T_{evap},T_{air}$','$T_{air}$'])
31
+plt.grid()
32
+plt.show()
13
 
33
 
14
 # https://stackoverflow.com/questions/10369681/how-to-plot-bar-graphs-with-same-x-coordinates-side-by-side-dodged
34
 # https://stackoverflow.com/questions/10369681/how-to-plot-bar-graphs-with-same-x-coordinates-side-by-side-dodged
15
 
35
 

+ 16
- 11
v5_class.py View File

42
 # 5.  Open door
42
 # 5.  Open door
43
 
43
 
44
 
44
 
45
-NumberOfFailures=3  # So far, we have only data for the first 4 types of failures
45
+NumberOfFailures=4  # So far, we have only data for the first 4 types of failures
46
 datafiles=[[],[]]   # 0 for train,  1 for test
46
 datafiles=[[],[]]   # 0 for train,  1 for test
47
 for i in range(NumberOfFailures+1):
47
 for i in range(NumberOfFailures+1):
48
     datafiles[0].append([])
48
     datafiles[0].append([])
53
 datafiles[0][1]=['2024-12-11_5_', '2024-12-12_5_','2024-12-13_5_'] 
53
 datafiles[0][1]=['2024-12-11_5_', '2024-12-12_5_','2024-12-13_5_'] 
54
 datafiles[0][2]=['2024-12-18_5_','2024-12-21_5_','2024-12-22_5_','2024-12-23_5_','2024-12-24_5_'] 
54
 datafiles[0][2]=['2024-12-18_5_','2024-12-21_5_','2024-12-22_5_','2024-12-23_5_','2024-12-24_5_'] 
55
 datafiles[0][3]=['2024-12-28_5_','2024-12-29_5_','2024-12-30_5_'] 
55
 datafiles[0][3]=['2024-12-28_5_','2024-12-29_5_','2024-12-30_5_'] 
56
-#datafiles[0][4]=['2025-02-13_5_']
56
+datafiles[0][4]=['2025-02-13_5_','2025-02-14_5_']
57
 
57
 
58
 if options.transition:
58
 if options.transition:
59
     datafiles[1][0]=['2025-01-27_5_','2025-01-28_5_'] 
59
     datafiles[1][0]=['2025-01-27_5_','2025-01-28_5_'] 
60
     datafiles[1][1]=['2024-12-14_5_','2024-12-15_5_','2024-12-16_5_']  # with TRANSITION
60
     datafiles[1][1]=['2024-12-14_5_','2024-12-15_5_','2024-12-16_5_']  # with TRANSITION
61
     datafiles[1][2]=['2024-12-17_5_','2024-12-19_5_','2024-12-25_5_','2024-12-26_5_'] # with TRANSITION
61
     datafiles[1][2]=['2024-12-17_5_','2024-12-19_5_','2024-12-25_5_','2024-12-26_5_'] # with TRANSITION
62
     datafiles[1][3]=['2024-12-27_5_','2024-12-31_5_','2025-01-01_5_'] # with TRANSITION
62
     datafiles[1][3]=['2024-12-27_5_','2024-12-31_5_','2025-01-01_5_'] # with TRANSITION
63
-    #datafiles[1][4]=['2025-02-12_5_','2025-02-13_5_']
63
+    datafiles[1][4]=['2025-02-12_5_','2025-02-15_5_','2025-02-16_5_']
64
 
64
 
65
 else:
65
 else:
66
     datafiles[1][0]=['2025-01-27_5_','2025-01-28_5_'] 
66
     datafiles[1][0]=['2025-01-27_5_','2025-01-28_5_'] 
67
     datafiles[1][1]=['2024-12-14_5_','2024-12-15_5_'] 
67
     datafiles[1][1]=['2024-12-14_5_','2024-12-15_5_'] 
68
     datafiles[1][2]=['2024-12-19_5_','2024-12-25_5_','2024-12-26_5_'] 
68
     datafiles[1][2]=['2024-12-19_5_','2024-12-25_5_','2024-12-26_5_'] 
69
     datafiles[1][3]=['2024-12-31_5_','2025-01-01_5_'] 
69
     datafiles[1][3]=['2024-12-31_5_','2025-01-01_5_'] 
70
-    #datafiles[1][4]=['2025-02-13_5_']
70
+    datafiles[1][4]=['2025-02-15_5_','2025-02-16_5_']
71
  
71
  
72
 
72
 
73
 #datafiles[0][4]=['2025-02-05_5_'] 
73
 #datafiles[0][4]=['2025-02-05_5_'] 
86
 features=['r1 s5']
86
 features=['r1 s5']
87
 # Feature combination suggested by AKO
87
 # Feature combination suggested by AKO
88
 #features=['r1 s1','r1 s4','r1 s5','pa1 apiii']
88
 #features=['r1 s1','r1 s4','r1 s5','pa1 apiii']
89
-#features=['r1 s1','r1 s4','r1 s5']
89
+features=['r1 s1','r1 s4','r1 s5']
90
 #features=['r1 s1','r1 s5','pa1 apiii']
90
 #features=['r1 s1','r1 s5','pa1 apiii']
91
 #features=['r1 s5','pa1 apiii']
91
 #features=['r1 s5','pa1 apiii']
92
 #features=['r1 s1','r1 s5']
92
 #features=['r1 s1','r1 s5']
93
-features=['r1 s5']
93
+#features=['r1 s5']
94
 
94
 
95
 
95
 
96
 
96
 
318
 
318
 
319
 
319
 
320
 #   2nd scenario. Go over anomalies and classify it by less error
320
 #   2nd scenario. Go over anomalies and classify it by less error
321
-datalist=[dataTestNorm[0],dataTestNorm[1],dataTestNorm[2],dataTestNorm[3]]
322
-#datalist=[dataTestNorm[0],dataTestNorm[1],dataTestNorm[2],dataTestNorm[3],dataTestNorm[4]]
321
+#datalist=[dataTestNorm[0],dataTestNorm[1],dataTestNorm[2],dataTestNorm[3]]
322
+datalist=[dataTestNorm[0],dataTestNorm[1],dataTestNorm[2],dataTestNorm[3],dataTestNorm[4]]
323
 x_test=create_sequences(datalist[0],int(options.timesteps))
323
 x_test=create_sequences(datalist[0],int(options.timesteps))
324
 for i in range(1,len(datalist)):
324
 for i in range(1,len(datalist)):
325
     x_test=np.vstack((x_test,create_sequences(datalist[i],int(options.timesteps))))
325
     x_test=np.vstack((x_test,create_sequences(datalist[i],int(options.timesteps))))
336
     plotData()
336
     plotData()
337
     exit(0)
337
     exit(0)
338
 
338
 
339
-testClasses=[0,1,2,3]
339
+testClasses=[0,1,2,3,4]
340
 
340
 
341
 if not len(testClasses)==len(testRanges):
341
 if not len(testClasses)==len(testRanges):
342
     print("ERROR:  testClasses and testRanges must have same length")
342
     print("ERROR:  testClasses and testRanges must have same length")
395
         s+=' '+unitNames[features[indexesToPlot[i]]]
395
         s+=' '+unitNames[features[indexesToPlot[i]]]
396
         if NumFeaturesToPlot==1:
396
         if NumFeaturesToPlot==1:
397
             axes.set_ylabel(s)
397
             axes.set_ylabel(s)
398
+            axes.set_xlabel('Sample number')
398
             axes.grid()
399
             axes.grid()
399
         else:
400
         else:
400
             axes[i].set_ylabel(s)
401
             axes[i].set_ylabel(s)
402
+            axes[NumFeaturesToPlot-1].set_xlabel('Sample number')
401
             axes[i].grid()
403
             axes[i].grid()
402
 
404
 
403
     for j in range(NumberOfFailures+1):
405
     for j in range(NumberOfFailures+1):
448
                     FN[classes[k]]+=1
450
                     FN[classes[k]]+=1
449
 
451
 
450
     for i in range(NumberOfFailures+1):
452
     for i in range(NumberOfFailures+1):
451
-        Sensitivity[i]=TP[i]/(TP[i]+FN[i])
453
+        if (TP[i]+FN[i])>0:
454
+            Sensitivity[i]=TP[i]/(TP[i]+FN[i])
455
+        else:
456
+            Sensitivity[i]=0
452
         Precision[i]=TP[i]/(TP[i]+FP[i])
457
         Precision[i]=TP[i]/(TP[i]+FP[i])
453
     S=Sensitivity.mean()
458
     S=Sensitivity.mean()
454
     P=Precision.mean()
459
     P=Precision.mean()
460
     print("F1-Score: ",F1)
465
     print("F1-Score: ",F1)
461
 
466
 
462
 anomalyMetric(classes,testRanges,testClasses)
467
 anomalyMetric(classes,testRanges,testClasses)
463
-#plotData4()
468
+plotData4()
464
 exit(0)
469
 exit(0)
465
 # Compute delay until correct detection for a list of ranges (when transition data exists)
470
 # Compute delay until correct detection for a list of ranges (when transition data exists)
466
 def computeDelay(l,classes,testRanges,testClasses):
471
 def computeDelay(l,classes,testRanges,testClasses):

Powered by TurnKey Linux.