Browse Source

Start prediction script

Petra Lamborn 5 years ago
parent
commit
53e9ddb1e0
2 changed files with 51 additions and 1 deletions
  1. 44
    0
      py/predict.py
  2. 7
    1
      py/pymodels.py

+ 44
- 0
py/predict.py View File

@@ -0,0 +1,44 @@
1
+from argparse import ArgumentParser, FileType
2
+import numpy as np
3
+import pandas as p
4
+import statsmodels.formula.api as smf
5
+import datetime as dt
6
+import pickle
7
+from pymodels import thirtyoffset, predweather, harmonic
8
+from pprint import pprint
9
+
10
+def main():
11
+    parser = ArgumentParser(description=
12
+                            'Predict from harmonic model of cluster')
13
+    parser.add_argument("-m", "--model-file", dest="model_file",
14
+                        help="filename for models",
15
+                        default="../models/testmod.pkl",
16
+                        type=FileType('rb'))
17
+    # parser.add_argument("-w", "--weather",  dest="weather",
18
+    #                     help="input weather pickle path",
19
+    #                     metavar="PATH", required=True,
20
+    #                     type=FileType('rb'))
21
+    parser.add_argument("--weather-harmonics", dest="weather_harmonics",
22
+                        help="number of harmonics for weather; default: 2",
23
+                        type=int, default=2, metavar="NUM")
24
+    parser.add_argument("--icp-harmonics", dest="icp_harmonics", nargs=3,
25
+                        help="harmonics for icp fitting, default 2 3 3",
26
+                        default=[2, 3, 3], type=int,
27
+                        metavar="NUM")
28
+    args = parser.parse_args()
29
+
30
+    print(args)
31
+
32
+    mods = pickle.load(args.model_file)
33
+
34
+    pprint(mods)
35
+    
36
+    print(mods["max_temp"].predict())
37
+
38
+    print(predweather(mods["max_temp"], "2019-01-01", "2019-02-01", harmonics = mods["weather_harmonics"]))
39
+
40
+    args.model_file.close()
41
+
42
+
43
+if __name__ == "__main__":
44
+    main()

+ 7
- 1
py/pymodels.py View File

@@ -171,10 +171,16 @@ def main():
171 171
 
172 172
     minm, maxm, sumdf = fitWeather(wdat, args.weather_harmonics)
173 173
 
174
+    clusters = icpdat.cluster.unique()
175
+    clusters.sort()
176
+
174 177
     mods = {
175 178
         "icp": fitdemand(icpdat, sumdf, args.icp_harmonics),
176 179
         "min_temp": minm,
177
-        "max_temp": maxm
180
+        "max_temp": maxm,
181
+        "clusters": clusters,
182
+        "weather_harmonics": args.weather_harmonics,
183
+        "icp_harmonics": args.icp_harmonics
178 184
     }
179 185
 
180 186
     pickle.dump(mods, args.model_file)