Ejemplo n.º 1
0
def classify_flight_delays_realtime():
    """POST API for classifying flight delays"""

    # Define the form fields to process
    api_field_type_map = \
      {
        "DepDelay": float,
        "Carrier": str,
        "FlightDate": str,
        "Dest": str,
        "FlightNum": str,
        "Origin": str
      }

    # Fetch the values for each field from the form object
    api_form_values = {}
    for api_field_name, api_field_type in api_field_type_map.items():
        api_form_values[api_field_name] = request.form.get(api_field_name,
                                                           type=api_field_type)

    # Set the direct values, which excludes Date
    prediction_features = {}
    for key, value in api_form_values.items():
        prediction_features[key] = value

    print api_form_values['Origin']
    print api_form_values['Dest']

    # Set the derived values
    prediction_features['Distance'] = predict_utils.get_flight_distance(
        client, api_form_values['Origin'], api_form_values['Dest'])
    print prediction_features['Distance']
    # # Turn the date into DayOfYear, DayOfMonth, DayOfWeek
    # date_features_dict = predict_utils.get_regression_date_args(
    #   api_form_values['FlightDate']
    # )
    # for api_field_name, api_field_value in date_features_dict.items():
    #   prediction_features[api_field_name] = api_field_value

    # # Add a timestamp
    # prediction_features['Timestamp'] = predict_utils.get_current_timestamp()

    # # Create a unique ID for this message
    # unique_id = str(uuid.uuid4())
    # prediction_features['UUID'] = unique_id

    # message_bytes = json.dumps(prediction_features).encode()
    # producer.send(PREDICTION_TOPIC, message_bytes)

    # response = {"status": "OK", "id": unique_id}
    # return json_util.dumps(response)
    return "done"
def classify_flight_delays_realtime():
    """POST API for classifying flight delays"""

    # Define the form fields to process
    api_field_type_map = \
      {
        "dep_delay": int,
        "carrier": str,
        "FlightDate": str,
        "dest": str,
        "FlightNum": str,
        "origin": str,
        "route": str,
        "arr_time": int,
        "dep_time": int
      }

    # Fetch the values for each field from the form object
    api_form_values = {}
    for api_field_name, api_field_type in api_field_type_map.items():
        api_form_values[api_field_name] = request.form.get(api_field_name,
                                                           type=api_field_type)

    # Set the direct values, which excludes Date
    prediction_features = {}
    for key, value in api_form_values.items():
        prediction_features[key] = value

    # Set the derived values
    prediction_features['distance'] = predict_utils.get_flight_distance(
        client, api_form_values['origin'], api_form_values['dest'])

    # Turn the date into DayOfMonth, DayOfWeek
    date_features_dict = predict_utils.get_regression_date_args(
        api_form_values['FlightDate'])
    for api_field_name, api_field_value in date_features_dict.items():
        prediction_features[api_field_name] = api_field_value

    # Create a unique ID for this message
    unique_id = str(uuid.uuid4())
    prediction_features['UUID'] = unique_id

    # Add a timestamp
    prediction_features['Timestamp'] = predict_utils.get_current_timestamp()

    print(json.dumps(prediction_features, sort_keys=True, indent=4))
    message_bytes = json.dumps(prediction_features).encode()
    producer.send(PREDICTION_TOPIC, message_bytes)

    response = {"status": "OK", "id": unique_id}
    return json_util.dumps(response)
Ejemplo n.º 3
0
def classify_flight_delays_realtime():
    """POST API for classifying flight delays"""

    # Define the form fields to process
    api_field_type_map = {
        "DepDelay": float,
        "Carrier": str,
        "FlightDate": str,
        "Dest": str,
        "FlightNum": str,
        "Origin": str,
    }

    # Fetch the values for each field from the form object
    api_form_values = {}
    for api_field_name, api_field_type in api_field_type_map.items():
        api_form_values[api_field_name] = request.form.get(api_field_name,
                                                           type=api_field_type)

    # Set the direct values, which excludes Date
    prediction_features = {}
    for key, value in api_form_values.items():
        prediction_features[key] = value

    # Set the derived values
    prediction_features["Distance"] = predict_utils.get_flight_distance(
        client, api_form_values["Origin"], api_form_values["Dest"])

    # Turn the date into DayOfYear, DayOfMonth, DayOfWeek
    date_features_dict = predict_utils.get_regression_date_args(
        api_form_values["FlightDate"])
    for api_field_name, api_field_value in date_features_dict.items():
        prediction_features[api_field_name] = api_field_value

    # Add a timestamp
    prediction_features["Timestamp"] = predict_utils.get_current_timestamp()

    # Create a unique ID for this message
    unique_id = str(uuid.uuid4())
    prediction_features["UUID"] = unique_id

    # Encode the JSON prediction message in bytes
    print(json.dumps(prediction_features, sort_keys=True, indent=4))
    message_bytes = json.dumps(prediction_features).encode()

    # Send the prediction message using
    producer.produce(PREDICTION_TOPIC, message_bytes, callback=delivery_report)
    producer.flush()

    response = {"status": "OK", "id": unique_id}
    return json_util.dumps(response)
Ejemplo n.º 4
0
def classify_flight_delays_realtime():
  """POST API for classifying flight delays"""
  
  # Define the form fields to process
  api_field_type_map = \
    {
      "DepDelay": float,
      "Carrier": str,
      "FlightDate": str,
      "Dest": str,
      "FlightNum": str,
      "Origin": str
    }

  # Fetch the values for each field from the form object
  api_form_values = {}
  for api_field_name, api_field_type in api_field_type_map.items():
    api_form_values[api_field_name] = request.form.get(api_field_name, type=api_field_type)
  
  # Set the direct values, which excludes Date
  prediction_features = {}
  for key, value in api_form_values.items():
    prediction_features[key] = value
  
  # Set the derived values
  prediction_features['Distance'] = predict_utils.get_flight_distance(
    client, api_form_values['Origin'],
    api_form_values['Dest']
  )
  
  # Turn the date into DayOfYear, DayOfMonth, DayOfWeek
  date_features_dict = predict_utils.get_regression_date_args(
    api_form_values['FlightDate']
  )
  for api_field_name, api_field_value in date_features_dict.items():
    prediction_features[api_field_name] = api_field_value
  
  # Add a timestamp
  prediction_features['Timestamp'] = predict_utils.get_current_timestamp()
  
  # Create a unique ID for this message
  unique_id = str(uuid.uuid4())
  prediction_features['UUID'] = unique_id
  
  message_bytes = json.dumps(prediction_features).encode()
  producer.send(PREDICTION_TOPIC, message_bytes)

  response = {"status": "OK", "id": unique_id}
  return json_util.dumps(response)
def regress_flight_delays():

    api_field_type_map = \
      {
        "DepDelay": int,
        "Carrier": str,
        "FlightDate": str,
        "Dest": str,
        "FlightNum": str,
        "Origin": str
      }

    api_form_values = {}
    for api_field_name, api_field_type in api_field_type_map.items():
        api_form_values[api_field_name] = request.form.get(api_field_name,
                                                           type=api_field_type)

    # Set the direct values
    prediction_features = {}
    prediction_features['Origin'] = api_form_values['Origin']
    prediction_features['Dest'] = api_form_values['Dest']
    prediction_features['FlightNum'] = api_form_values['FlightNum']

    # Set the derived values
    prediction_features['Distance'] = predict_utils.get_flight_distance(
        client, api_form_values['Origin'], api_form_values['Dest'])

    # Turn the date into DayOfYear, DayOfMonth, DayOfWeek
    date_features_dict = predict_utils.get_regression_date_args(
        api_form_values['FlightDate'])
    for api_field_name, api_field_value in date_features_dict.items():
        prediction_features[api_field_name] = api_field_value

    # Vectorize the features
    feature_vectors = vectorizer.transform([prediction_features])

    # Make the prediction!
    result = regressor.predict(feature_vectors)[0]

    # Return a JSON object
    result_obj = {"Delay": result}
    return json.dumps(result_obj)
def classify_flight_delays():
  """POST API for classifying flight delays"""
  api_field_type_map = \
    {
      "DepDelay": float,
      "Carrier": str,
      "FlightDate": str,
      "Dest": str,
      "FlightNum": str,
      "Origin": str
    }
  
  api_form_values = {}
  for api_field_name, api_field_type in api_field_type_map.items():
    api_form_values[api_field_name] = request.form.get(api_field_name, type=api_field_type)
  
  # Set the direct values, which excludes Date
  prediction_features = {}
  for key, value in api_form_values.items():
    prediction_features[key] = value
  
  # Set the derived values
  prediction_features['Distance'] = predict_utils.get_flight_distance(
    client, api_form_values['Origin'],
    api_form_values['Dest']
  )
  
  # Turn the date into DayOfYear, DayOfMonth, DayOfWeek
  date_features_dict = predict_utils.get_regression_date_args(
    api_form_values['FlightDate']
  )
  for api_field_name, api_field_value in date_features_dict.items():
    prediction_features[api_field_name] = api_field_value
  
  # Add a timestamp
  prediction_features['Timestamp'] = predict_utils.get_current_timestamp()
  
  client.agile_data_science.prediction_tasks.insert_one(
    prediction_features
  )
  return json_util.dumps(prediction_features)
Ejemplo n.º 7
0
def classify_flight_delays():
  """POST API for classifying flight delays"""
  api_field_type_map = \
    {
      "DepDelay": float,
      "Carrier": str,
      "FlightDate": str,
      "Dest": str,
      "FlightNum": str,
      "Origin": str
    }
  
  api_form_values = {}
  for api_field_name, api_field_type in api_field_type_map.items():
    api_form_values[api_field_name] = request.form.get(api_field_name, type=api_field_type)
  
  # Set the direct values, which excludes Date
  prediction_features = {}
  for key, value in api_form_values.items():
    prediction_features[key] = value
  
  # Set the derived values
  prediction_features['Distance'] = predict_utils.get_flight_distance(
    client, api_form_values['Origin'],
    api_form_values['Dest']
  )
  
  # Turn the date into DayOfYear, DayOfMonth, DayOfWeek
  date_features_dict = predict_utils.get_regression_date_args(
    api_form_values['FlightDate']
  )
  for api_field_name, api_field_value in date_features_dict.items():
    prediction_features[api_field_name] = api_field_value
  
  # Add a timestamp
  prediction_features['Timestamp'] = predict_utils.get_current_timestamp()
  
  client.agile_data_science.prediction_tasks.insert_one(
    prediction_features
  )
  return json_util.dumps(prediction_features)
Ejemplo n.º 8
0
def regress_flight_delays():
  
  api_field_type_map = \
    {
      "DepDelay": int,
      "Carrier": str,
      "FlightDate": str,
      "Dest": str,
      "FlightNum": str,
      "Origin": str
    }
  
  api_form_values = {}
  for api_field_name, api_field_type in api_field_type_map.items():
    api_form_values[api_field_name] = request.form.get(api_field_name, type=api_field_type)
  
  # Set the direct values
  prediction_features = {}
  prediction_features['Origin'] = api_form_values['Origin']
  prediction_features['Dest'] = api_form_values['Dest']
  prediction_features['FlightNum'] = api_form_values['FlightNum']
  
  # Set the derived values
  prediction_features['Distance'] = predict_utils.get_flight_distance(client, api_form_values['Origin'], api_form_values['Dest'])
  
  # Turn the date into DayOfYear, DayOfMonth, DayOfWeek
  date_features_dict = predict_utils.get_regression_date_args(api_form_values['FlightDate'])
  for api_field_name, api_field_value in date_features_dict.items():
    prediction_features[api_field_name] = api_field_value
  
  # Vectorize the features
  feature_vectors = vectorizer.transform([prediction_features])
  
  # Make the prediction!
  result = regressor.predict(feature_vectors)[0]
  
  # Return a JSON object
  result_obj = {"Delay": result}
  return json.dumps(result_obj)