def predict_delay(airport_code): firebase_source = mapper.get_source_firebase() airport_status = firebase_source.get_airport(airport_code) cleaned_data = utils.get_clean_data(airport_status) res = predictor.predict(airport_code) cleaned_data["prediction"] = bool(res[0]) return jsonify(cleaned_data)
def get_airport_statuses(): firebase_source = mapper.get_source_firebase() airports = firebase_source.get_all() results = [] for airport_code, status in airports.items(): try: results.append(utils.get_clean_data(status)) except: pass results = {"items": results} return jsonify(results)
def get_airport_statuses(): firebase_source = mapper.get_source_firebase() airports = firebase_source.get_all() results = [] for airport_code, status in airports.items(): try: results.append(utils.get_clean_data(status)) except: pass results = {"items":results} return jsonify(results)
def clean_data(self): uncleaned = self.dump_firebase.get_all() uncleaned = uncleaned or {} firebase_clean = FirebaseApplication(app.config["FIREBASE_CLEAN"], None) cleaned = firebase_clean.get("/", None) for airport_code, date_status_dict in uncleaned.items(): if type(date_status_dict) != dict: print airport_code, date_status_dict continue for date, event in date_status_dict.items(): if airport_code in cleaned and date in cleaned[airport_code]: continue filtered_data = utils.get_clean_data(event) try: firebase_clean.put(url="/"+airport_code, name=date, data=filtered_data) print "Cleaned", airport_code, date except Exception as e: print "Could not clean", airport_code, date, event print e
def get_flight_info_from_firebase(self): response = self.source_firebase.get("", None) updated = parser.parse(response["_updated"]) if updated <= self.last_updated + self.delta: raise Exception("Not time to sync yet.") print "Syncing Airpot Delays from", updated.isoformat() self.last_updated = updated update_str = updated.isoformat() firebase_clean = FirebaseApplication(app.config["FIREBASE_CLEAN"], None) for airport_code, info in response.items(): # this is not an airport :) if airport_code == "_updated": continue try: self.dump_firebase.firebase.put(url="/"+airport_code, name=update_str, data=info) filtered_data = utils.get_clean_data(info) firebase_clean.put(url="/"+airport_code, name=update_str, data=filtered_data) except Exception as e: print "Something failed", e self.dump_firebase.firebase.put("/", "last_updated", update_str)
) # The Adam optimizer is used. optimizer = keras.optimizers.Adam(learning_rate=lr_schedule) # The model is trained using accuracy, and the loss function is binary crossentropy. model.compile(optimizer=optimizer, loss="binary_crossentropy", metrics=["accuracy"]) return model if __name__ == "__main__": features = ["Pseudo-Log-Return", "Trend Indicator"] label = ["Direction"] # Get each set of data. df_train, df_valid, df_test = get_clean_data() Xtrain = df_train[features].values Ytrain = df_train[label].values.ravel() Xvalid = df_valid[features].values Yvalid = df_valid[label].values.ravel() Xtest = df_test[features].values Ytest = df_test[label].values.ravel() # Store the data for each set in the corresponding feature and output vectors. # Preprocess the data. https://scikit-learn.org/stable/modules/preprocessing.html scale = MinMaxScaler(feature_range=(0, 1)) Xtrain = scale.fit_transform(Xtrain) Ytrain = scale.fit_transform(Ytrain.reshape(-1, 1)) Xvalid = scale.fit_transform(Xvalid) Yvalid = scale.fit_transform(Yvalid.reshape(-1, 1)) Xtest = scale.fit_transform(Xtest)