gpcervellera commited on
Commit
2ef73f8
·
verified ·
1 Parent(s): 20d0c48

Delete algoritm.py

Browse files
Files changed (1) hide show
  1. algoritm.py +0 -118
algoritm.py DELETED
@@ -1,118 +0,0 @@
1
-
2
- import os
3
- import statsmodels.api as sm
4
- from sklearn.linear_model import LinearRegression
5
- import pandas as pd
6
- import numpy as np
7
- import os
8
- import shutil
9
-
10
- res_loaded = sm.load("beta_model_clogging.pkl")
11
- #Prendiamo tutti i limiti superiori, tranne l’ultimo che va a +∞.
12
- bins = [
13
- 6.827491567, 7.207134976, 7.507514601, 7.85202832, 8.135308095,
14
- 8.689867231, 9.286871296, 9.617912395, 10.09183855, 10.73296965,
15
- 11.10692936, 11.69554997, 12.28992645, 12.73162955, 13.58962501,
16
- 14.05211378, 14.82733437, 15.28453334, 15.97759006, 16.82037951,
17
- 17.64491222, 18.42719281, 19.35467075, 20.11238201, 21.11239952,
18
- 21.8749792, 23.13365381, 24.06277248, 24.69985079, 26.06401012,
19
- 26.99098886, 28.06155461, 29.31860042, 30.62386734, 31.4413642,
20
- 32.92566161, 33.97571072, 35.31251088, 36.15053542, 37.57770049,
21
- 39.13652821, 40.29113449, 41.76522545, 42.82082043, 44.00697262,
22
- 45.92880868, 46.82432879, 48.63647026, 49.74936819, 51.22777855,
23
- 52.49036854, 53.51554916, 55.2477514, 56.28299801, 57.51382218,
24
- 59.16053699, 60.15795894, 61.6664039, 62.90702101, 63.87127815,
25
- 64.98319564, 66.22208356, 66.61521227, 68.15750081, 69.44821662,
26
- 70.66864959, 71.92308181, 72.69082311, 73.92476305, 74.87935242,
27
- 75.77031936, 76.94368679, 78.04134047, 79.02976362, 79.56238123,
28
- 80.1200946, 81.16954675, 82.1616298, 82.70600553, 83.32428364,
29
- 84.40737139, 85.17567459, 85.61323671, 86.27587966, 87.00108867,
30
- 87.48195456, 87.87995156, 88.53346862, 88.95068965, 89.6043336,
31
- 90.05141954, 90.51239833, 90.99974806, 91.33113872, 91.79738573,
32
- 92.19314603, 92.59169911, 92.84177084, 93.23587096, np.inf
33
- ]
34
- values = [0] + list(range(2, 101))
35
-
36
- def algoritmo(json_data):
37
- d = json_data
38
- df_s = pd.DataFrame({
39
- "deviceId": d["deviceId"],
40
- "TELEMETRY_SEQ_GROUP_ID": d["TELEMETRY_SEQ_GROUP_ID"],
41
- **{k: d[k] for k in d if isinstance(d[k], list)}
42
- })
43
- cols = [
44
- 'OAT', 'IAS', 'ALPHAI', 'BETAI', 'TETA', 'PHI', 'HDG', 'P', 'Q',
45
- 'R', 'NR', 'NP1', 'NG1', 'VZ', 'ZRS',
46
- 'E1A_TM_TOT', 'E1A_TM_T1', 'NGR1', 'DP1'
47
- ]
48
- X = df_s[cols]
49
- assert list(X.columns) == cols
50
-
51
- X = df_s[cols]
52
- X = sm.add_constant(X)
53
- y_pred = res_loaded.predict(X)
54
- y_pred_100 = y_pred * 100
55
- df_s['y_pred_100']=y_pred_100
56
- #print(len(y_pred_100))
57
- df_s["clogging_LH_Predicted"] = np.take(values, np.searchsorted(bins, df_s["y_pred_100"], side="right"))
58
- mean_clogging = df_s["clogging_LH_Predicted"].mean()
59
- #creo la cartella se non esiste
60
- device_id = d["deviceId"]
61
- csv_path = os.path.join(device_id, "clogging_mean_by_group.csv")
62
- group_id = d["TELEMETRY_SEQ_GROUP_ID"]
63
- if group_id == 0:
64
- if os.path.exists(device_id):
65
- shutil.rmtree(device_id)
66
- os.makedirs(device_id)
67
- #dataframe da scrivere
68
- row = pd.DataFrame([{
69
- "TELEMETRY_SEQ_GROUP_ID": group_id,
70
- "mean_clogging_LH_Predicted": mean_clogging
71
- }])
72
- row.to_csv(
73
- csv_path,
74
- mode="a",
75
- header=not os.path.exists(csv_path),
76
- index=False
77
- )
78
- #regressione
79
- dtf=pd.read_csv(csv_path)
80
- #print(dtf)
81
- l=len(dtf)
82
- if l>5:
83
- X=dtf[['TELEMETRY_SEQ_GROUP_ID']]
84
- y=dtf['mean_clogging_LH_Predicted']
85
- model = LinearRegression()
86
- model.fit(X, y)
87
-
88
- a = model.coef_[0]
89
- b = model.intercept_
90
-
91
- x_at_100 = ((100 - b) / a) if a != 0 else np.nan
92
- if a != 0:
93
- x_at_100 =x_at_100 - int(group_id)
94
- slope= a
95
- intercept= b
96
- r2= model.score(X, y)
97
- n_points= l
98
- else:
99
- x_at_100 =np.nan
100
- slope=np.nan
101
- intercept= np.nan
102
- r2= np.nan
103
- n_points= l
104
-
105
- else:
106
- x_at_100 =np.nan
107
- slope=np.nan
108
- intercept= np.nan
109
- r2= np.nan
110
- n_points= l
111
-
112
- pic={}
113
- pic['x_at_100']=x_at_100
114
- pic['slope']=slope
115
- pic['intercept']=intercept
116
- pic['r2']=r2
117
- pic['n_points']=l
118
- return pic