예제 #1
0
def predict(modelname, datasourcetype, datefrom, dateto):
    date_from = date_utils.try_parse(datefrom)
    date_to = date_utils.try_parse(dateto)
    if not date_from:
        logger.error('Error parse date.')
        raise BadRequest
    if not date_to:
        logger.error('Error parse date.')
        raise BadRequest

    try:
        ds = DataService(data_source_factory=DataSourceFactory(app.config))
        X, Y, metadata = \
            ds.get_data(
                data_source_type=datasourcetype,
                filter={"game_date": {"$gte": date_from, "$lt": date_to}})

        if not X:
            return jsonify(data=None)

        ps = PredictionService(
                model_storage=AzureBlobStorage(
                                app.config['AZURE_STORAGE_NAME'],
                                app.config['AZURE_STORAGE_KEY'],
                                'deepsportmodels'))
        predictions = ps.predict(X=X, model_name=modelname)

        return jsonify(data=[{'gameDate': str(pd[1]['game_date'].date()),
                   'team1Name': pd[1]['team1_name'],
                   'team2Name': pd[1]['team2_name'],
                   'winProba': pd[0][1] * 100}
                   for pd in zip(predictions, metadata)])
    except:
        logger.error("%s: Unexpected error: %s" % (__name__, sys.exc_info()))
        raise InternalServerError
예제 #2
0
}


if __name__ == '__main__':

    parser = argparse.ArgumentParser()
    parser.add_argument('--df')
    parser.add_argument('--dt')
    parser.add_argument('--st')
    parser.add_argument('--bu')
    parser.add_argument('--tss')
    parser.add_argument('--gs')
    parser.add_argument('--f')
    args = parser.parse_args()

    date_from = date_utils.try_parse(args.df)
    date_to = date_utils.try_parse(args.dt)
    source_type = args.st
    team_stat_season = args.tss
    games_season = args.gs
    csv_filename = args.f
    base_url = args.bu

    ds = SportReferenceDataSource(
                        base_url=base_url,
                        team_stat_season=team_stat_season,
                        games_season=games_season,
                        game_type=source_type,
                        row_parse_strategy=__source_type_map[source_type],
                        cache_team_stats=True)
    X, Y, metadata = ds.load(dict(date_from=date_from, date_to=date_to))