コード例 #1
0
ファイル: data_test.py プロジェクト: JFanZhao/seasonal
def check_csv(csvpath, split=None):
    try:
        period = int(csvpath.split(".")[-2])
    except ValueError:
        period = None
    _, data, _ = read_csv(csvpath, split=split)
    seasons, trend = fit_seasons(data)
    assert seasons is None  or len(seasons) == period, \
        "expected period {}, got {}".format(
            period, len(seasons) if seasons else None)
コード例 #2
0
def check_csv(csvpath, split=None):
    try:
        period = int(csvpath.split(".")[-2])
    except ValueError:
        period = None
    _, data, _ = read_csv(csvpath, split=split)
    seasons, trend = fit_seasons(data)
    assert seasons is None  or len(seasons) == period, \
        "expected period {}, got {}".format(
            period, len(seasons) if seasons else None)
コード例 #3
0
ファイル: hw.py プロジェクト: paoloRais/seasonal
def main():
    import os.path
    from optparse import OptionParser
    from textwrap import dedent
    import matplotlib
    import matplotlib.pyplot as plt
    matplotlib.style.use('ggplot')
    from seasonal.application import read_csv

    parser = OptionParser(
        usage="usage: %prog [options] csv-files...",
        description="Holt-Winters demo using the seasonal package"
    )
    parser.add_option("--column", default=-1,
                      help="csv column to use (name or 0-based index, default rightmost)")
    parser.add_option("--split", type="float", default=None,
                      help=("split data at the split*100%  or int(split) " +
                            "point for initialization"))
    parser.add_option("--demo", action="store_true",
                      help="demonstrate with some air passenger data")
    (options, args) = parser.parse_args()

    if options.demo:
        args = [os.path.join(os.path.dirname(seasonal.__file__),
                             "data/airPassengers.csv")]
        if options.split is None:
            options.split = 0.20

    if not args:
        parser.print_help()
        exit(-1)

    if not plt:
        stderr.write(
            "Error: matplotlib must be installed\n")
        exit(-1)

    for csvpath in args:
        _, data, column = read_csv(csvpath, column=options.column)
        fcast, smoothed = hw(data, options.split)
        plt.figure()
        plt.title("Holt Winters demonstration")
        plt.plot(data, label=column)
        plt.plot(fcast, label="forecast")
        plt.plot(smoothed, label="smoothed")
        leg = plt.legend(loc='upper left')
        leg.get_frame().set_alpha(0.5)
        plt.show()
コード例 #4
0
def main():
    import os.path
    from optparse import OptionParser
    from textwrap import dedent
    import matplotlib
    import matplotlib.pyplot as plt
    matplotlib.style.use('ggplot')
    from seasonal.application import read_csv

    parser = OptionParser(
        usage="usage: %prog [options] csv-files...",
        description="Holt-Winters demo using the seasonal package")
    parser.add_option(
        "--column",
        default=-1,
        help="csv column to use (name or 0-based index, default rightmost)")
    parser.add_option("--split",
                      type="float",
                      default=None,
                      help=("split data at the split*100%  or int(split) " +
                            "point for initialization"))
    parser.add_option("--params",
                      help=("comma-separated list of alpha, beta, gamma. " +
                            "default is to estimate these from ALL the data"))
    parser.add_option("--demo",
                      action="store_true",
                      help="demonstrate with some air passenger data")
    (options, args) = parser.parse_args()

    if options.demo:
        args = [
            os.path.join(os.path.dirname(seasonal.__file__),
                         "data/airPassengers.csv")
        ]
        if options.split is None:
            options.split = 0.20

    if not args:
        parser.print_help()
        exit(-1)

    if not plt:
        stderr.write("Error: matplotlib must be installed\n")
        exit(-1)

    if options.params is not None:
        try:
            params = [float(p) for p in options.params.split(',')]
            options.params = HWParams(*params)
        except Exception:
            stderr.write("\nError: --params wants alpha,beta,gamma\n")
            parser.print_help()
            exit(-1)

    for csvpath in args:
        index, data, column = read_csv(csvpath, column=options.column)
        fcast, smoothed = hw(data, options.split, params=options.params)
        plt.figure(1)
        plt.subplot(211)
        plt.title("Holt Winters for " + os.path.basename(csvpath))
        plt.plot(index, data, label=column)
        plt.plot(index, fcast, label="forecast")
        plt.plot(index, smoothed, label="smoothed")
        leg = plt.legend(loc='upper left')
        leg.get_frame().set_alpha(0.5)
        plt.subplot(212)
        plt.title("Forecast Error")
        plt.plot(index, fcast - data)
        plt.show()