Example #1
0
def kalman_filter_classification_times(data_folder):
    """
    Measures the time needed to classify an observation with the Kalman filter algorithm.

    :param data_folder: Folder name where the data is located.
    :return: Time needed to evaluate the Kalman filter algorithm (in seconds).
    """
    obs_set = observations_set.ObservationROISet.fromfolder(data_folder)
    obs_set.synchronize_average()

    Fk = np.eye(4)
    Fk[0, 2] = 1
    Fk[1, 3] = 1

    Hk = np.eye(4)

    Qk = np.eye(4)
    Rk = np.eye(4)
    Pk_minus = np.eye(4)
    initial_status = np.asarray([16, 16, 0, 0])

    # Creates the Kalman filter.
    kalmanModel = KalmanFilter(Fk, Hk, Qk, Rk, Pk_minus, initial_status)

    score = np.empty((obs_set.num_observations(), ))

    classification_time = 0
    for n in range(obs_set.num_observations()):
        print(
            str(n) + " / " + str(obs_set.num_observations()) + " " +
            obs_set.names_vector[n])
        observations_test = obs_set.select_observations(n, inplace=False)

        # Evaluates the anomaly score for the normal/normal noise data.
        start = time.time()
        score[n] = kalmanModel.evaluate_observation(observations_test)
        end = time.time()
        classification_time += end - start
    return classification_time / obs_set.num_observations()