cesar před 5 dny
rodič
revize
fd58271390

+ 7832
- 0
data/2025-02-14_5_.csv
Diff nebyl zobrazen, protože je příliš veliký
Zobrazit soubor


+ 7833
- 0
data/2025-02-15_5_.csv
Diff nebyl zobrazen, protože je příliš veliký
Zobrazit soubor


+ 7829
- 0
data/2025-02-16_5_.csv
Diff nebyl zobrazen, protože je příliš veliký
Zobrazit soubor


binární
paper/Adapt25_Paper_Template_updated_AKO_v1.docx Zobrazit soubor


binární
paper/drawing-figv1_3.png Zobrazit soubor


+ 70
- 0
paper/drawing-figv1_3.svg
Diff nebyl zobrazen, protože je příliš veliký
Zobrazit soubor


binární
paper/figv1_1.png Zobrazit soubor


binární
paper/figv1_2.png Zobrazit soubor


binární
paper/figv1_3.png Zobrazit soubor


+ 25
- 5
plotFScore_v5.py Zobrazit soubor

@@ -3,13 +3,33 @@
3 3
 import matplotlib.pyplot as plt
4 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 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 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 Zobrazit soubor

@@ -42,7 +42,7 @@ parser.add_option("-p", "--plot", dest="plot", help="Only plot data (false)", de
42 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 46
 datafiles=[[],[]]   # 0 for train,  1 for test
47 47
 for i in range(NumberOfFailures+1):
48 48
     datafiles[0].append([])
@@ -53,21 +53,21 @@ datafiles[0][0]=['2024-08-07_5_','2024-08-08_5_','2025-01-25_5_','2025-01-26_5_'
53 53
 datafiles[0][1]=['2024-12-11_5_', '2024-12-12_5_','2024-12-13_5_'] 
54 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 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 58
 if options.transition:
59 59
     datafiles[1][0]=['2025-01-27_5_','2025-01-28_5_'] 
60 60
     datafiles[1][1]=['2024-12-14_5_','2024-12-15_5_','2024-12-16_5_']  # with TRANSITION
61 61
     datafiles[1][2]=['2024-12-17_5_','2024-12-19_5_','2024-12-25_5_','2024-12-26_5_'] # with TRANSITION
62 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 65
 else:
66 66
     datafiles[1][0]=['2025-01-27_5_','2025-01-28_5_'] 
67 67
     datafiles[1][1]=['2024-12-14_5_','2024-12-15_5_'] 
68 68
     datafiles[1][2]=['2024-12-19_5_','2024-12-25_5_','2024-12-26_5_'] 
69 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 73
 #datafiles[0][4]=['2025-02-05_5_'] 
@@ -86,11 +86,11 @@ features=['r1 s1','r1 s4','r1 s5']
86 86
 features=['r1 s5']
87 87
 # Feature combination suggested by AKO
88 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 90
 #features=['r1 s1','r1 s5','pa1 apiii']
91 91
 #features=['r1 s5','pa1 apiii']
92 92
 #features=['r1 s1','r1 s5']
93
-features=['r1 s5']
93
+#features=['r1 s5']
94 94
 
95 95
 
96 96
 
@@ -318,8 +318,8 @@ def plotData():
318 318
 
319 319
 
320 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 323
 x_test=create_sequences(datalist[0],int(options.timesteps))
324 324
 for i in range(1,len(datalist)):
325 325
     x_test=np.vstack((x_test,create_sequences(datalist[i],int(options.timesteps))))
@@ -336,7 +336,7 @@ if options.plot:
336 336
     plotData()
337 337
     exit(0)
338 338
 
339
-testClasses=[0,1,2,3]
339
+testClasses=[0,1,2,3,4]
340 340
 
341 341
 if not len(testClasses)==len(testRanges):
342 342
     print("ERROR:  testClasses and testRanges must have same length")
@@ -395,9 +395,11 @@ def plotData4():
395 395
         s+=' '+unitNames[features[indexesToPlot[i]]]
396 396
         if NumFeaturesToPlot==1:
397 397
             axes.set_ylabel(s)
398
+            axes.set_xlabel('Sample number')
398 399
             axes.grid()
399 400
         else:
400 401
             axes[i].set_ylabel(s)
402
+            axes[NumFeaturesToPlot-1].set_xlabel('Sample number')
401 403
             axes[i].grid()
402 404
 
403 405
     for j in range(NumberOfFailures+1):
@@ -448,7 +450,10 @@ def anomalyMetric(classes,testranges,testclasses):
448 450
                     FN[classes[k]]+=1
449 451
 
450 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 457
         Precision[i]=TP[i]/(TP[i]+FP[i])
453 458
     S=Sensitivity.mean()
454 459
     P=Precision.mean()
@@ -460,7 +465,7 @@ def anomalyMetric(classes,testranges,testclasses):
460 465
     print("F1-Score: ",F1)
461 466
 
462 467
 anomalyMetric(classes,testRanges,testClasses)
463
-#plotData4()
468
+plotData4()
464 469
 exit(0)
465 470
 # Compute delay until correct detection for a list of ranges (when transition data exists)
466 471
 def computeDelay(l,classes,testRanges,testClasses):

Powered by TurnKey Linux.