Exemplo n.º 1
0
def generate_visualisations(clf, X, y, ts, labels, features):
    from bhealth.visualisations import labels_figure
    from bhealth.visualisations import features_figure
    y_pred = clf.predict(X)
    fig = plt.figure(figsize=(10, 4))
    ax = fig.add_subplot(2, 1, 1)
    fig, ax = labels_figure(y_pred, ts=ts, labels=labels, fig=fig, ax=ax)
    ax = fig.add_subplot(2, 1, 2)
    df_X = pd.DataFrame(X, index=ts).resample('15Min').agg('mean')
    fig, ax = features_figure(df_X.values, ts=df_X.index, feature_names=features, fig=fig, ax=ax)
    fig.savefig('predictions.svg')

    # Ongoing example of polar plot
    from bhealth.visualisations import polar_labels_figure
    def most_common(x):
        if len(x) == 0:
            return -1
        return np.argmax(np.bincount(x))

    resample = '15Min'
    df_labels = pd.DataFrame(y_pred, columns=['label'], index=ts).resample(resample).agg(most_common)

    # Add NaN at the beginning for days before installation
    first_day = df_labels.index[0].replace(hour=0, minute=0, second=0,
                                         microsecond=0)
    previous_monday = first_day + timedelta(days=-first_day.weekday())
    leading_labels = (first_day - previous_monday) / resample
    df_labels = pd.concat([pd.DataFrame(data=-1, index=[previous_monday],
                                        columns=['label']),
                           df_labels])
    df_labels = df_labels.resample(resample).agg('first')
    df_labels = df_labels.fillna(-1)

    # Number of columns in one week
    n_columns = int(pd.Timedelta('1D') /
                     pd.Timedelta(resample))

    xticklabels = ('24', '1', '2', '3', '4', '5', '6', '7',
                   '8', '9', '10', '11', '12', '13', '14', '15',
                   '16', '17', '18', '19', '20', '21', '22', '23')
    filename = 'labels_daily.png'

    # Add carrying -1 (denoting NaNs)
    y_labels = df_labels['label'].values
    y_labels = np.concatenate((y_labels, -
                               np.ones(int(np.ceil(len(y_labels)/n_columns)*n_columns)
                                     - len(y_labels))))
    # Create a rectangular matrix with (number_weeks x labels_per_week)
    # Int this case every week has n_columns
    y_labels = y_labels.reshape((-1, n_columns)).astype(int)

    fi, ax = polar_labels_figure(y_labels, labels, xticklabels,
                                  empty_rows=4, leading_labels=0, spiral=True,
                                  title="{} per box".format(resample), m=None)
    fig.savefig(filename, dpi=300)
Exemplo n.º 2
0
    metric_array = [
        metrics.duration_sitting, metrics.duration_walking,
        metrics.duration_washing, metrics.duration_eating,
        metrics.duration_sleeping, metrics.duration_studying,
        metrics.number_of_unique_activities
    ]

    metric_container, date_container = metrics.run_metric_array(
        metric_array, csv='./output/accelerometer_metrics.csv')

    return metric_container, date_container


if __name__ == '__main__':
    ts, X, y = get_raw_ts_X_y()
    features_figure(X[0:X.size:50], feature_names=['X', 'Y', 'Z'])

    X, y = preprocess_X_y(ts, X, y)
    (X_train, y_train), (X_test, y_test) = split_train_test(X, y)
    clf_grid = get_classifier_grid()
    clf_grid.fit(X_train, y_train)
    print_summary(clf_grid, X_test, y_test)

    metric_container_daily, date_container_daily = activity_metrics(
        y, ts, 'daily')
    figures_dict = plot_metrics(metric_container_daily, date_container_daily)

    for key, fig in figures_dict.items():
        fig.savefig(os.path.join('./output/', key))
Exemplo n.º 3
0

if __name__ == '__main__':
    houses = ['A']

    for house_ in houses:

        ts, X, y = get_raw_ts_X_y(house_)
        X, y = preprocess_X_y(ts, X, y)
        (X_train, y_train), (X_test, y_test) = split_train_test(X, y)
        clf_grid = get_classifier_grid()
        clf_grid.fit(X_train, y_train)
        print_summary(clf_grid, X_test, y_test)

        metric_container_daily, date_container_daily = localisation_metrics(
            y, ts, 'daily')
        figures_dict = plot_metrics(
            metric_container_daily,
            date_container_daily,
            labels_=['foyer', 'bedroom', 'living_room', 'bathroom'])

        fig, ax = features_figure(X,
                                  feature_names=[
                                      'AP1', 'AP2', 'AP3', 'AP4', 'AP5', 'AP6',
                                      'AP7', 'AP8'
                                  ])
        figures_dict['features'] = fig

        for key, fig in figures_dict.items():
            fig.savefig(os.path.join('./output/', key))
Exemplo n.º 4
0
                    metrics.duration_eating,
                    metrics.duration_sleeping,
                    metrics.duration_studying,
                    metrics.number_of_unique_activities]

    metric_container, date_container = metrics.run_metric_array(
        metric_array, csv='./output/synthetic_metrics.csv')

    return metric_container, date_container

if __name__ == '__main__':
    ts, X, y, labels, features = get_raw_ts_X_y()

    ts, X, y = preprocess_X_y(ts, X, y)
    (ts_train, X_train, y_train), (ts_test, X_test, y_test) = split_train_test(ts, X, y)
    clf_grid = get_classifier_grid()
    clf_grid.fit(X_train, y_train)
    print_summary(clf_grid, X_test, y_test)

    metric_container_daily, date_container_daily = activity_metrics(y, ts,
                                                                    'daily')
    figures_dict = plot_metrics(metric_container_daily, date_container_daily)

    fig, ax = features_figure(X[0:X.size:50], ts[0:ts.size:50],
                              feature_names=['X', 'Y', 'Z'])
    figures_dict['features'] = fig

    for key, fig in figures_dict.items():
        fig.tight_layout()
        fig.savefig(os.path.join('./output/', key))
Exemplo n.º 5
0
        metrics.duration_in_living_room, metrics.walking_speed,
        metrics.room_transfers, metrics.number_of_unique_locations
    ]

    metric_container, date_container = metrics.run_metric_array(
        metric_array, csv='./output/synthetic_long_metrics.csv')

    return metric_container, date_container


if __name__ == '__main__':
    ts, X, y, labels, features = get_raw_ts_X_y()

    features_figure(X,
                    ts,
                    feature_names=[
                        'rssi bathroom', 'rssi bedroom 1', 'rssi stairs',
                        'rssi hall', 'rssi kitchen', 'rssi living room'
                    ])

    ts, X, y = preprocess_X_y(ts, X, y)
    (ts_train, X_train, y_train), (ts_test, X_test,
                                   y_test) = split_train_test(ts, X, y)
    clf_grid = get_classifier_grid()
    clf_grid.fit(X_train, y_train)
    # =============================================================================
    #     print_summary(clf_grid, X_test, y_test)
    # =============================================================================

    # =============================================================================
    #     generate_visualisations(
    #                 clf_grid.best_estimator_,