Python 如何实施“向前走”

Python 如何实施“向前走”,python,machine-learning,Python,Machine Learning,我想实施一个前瞻性分析。就像照片上那样 我写了这段代码 @staticmethod def build_rolling_calendar(start_date, end_date, out_of_sample_size, runs): days = (end_date - start_date).days in_sample_size = (100 - out_of_sample_size) / 100 out_of_sample_size = out_of_sam

我想实施一个前瞻性分析。就像照片上那样

我写了这段代码

@staticmethod
def build_rolling_calendar(start_date, end_date, out_of_sample_size, runs):
    days = (end_date - start_date).days

    in_sample_size = (100 - out_of_sample_size) / 100
    out_of_sample_size = out_of_sample_size / 100

    total_days_per_run = round(days / (runs * out_of_sample_size + in_sample_size))
    in_sample_days_per_run = round(total_days_per_run * in_sample_size)
    out_of_sample_days_per_run = round(total_days_per_run * out_of_sample_size)

    calendar = pd.DataFrame()

    calendar['InSampleStarts'] = [start_date + timedelta(days=(out_of_sample_days_per_run * x))
                                  for x in range(runs)]
    calendar['InSampleEnds'] = [x + timedelta(days=in_sample_days_per_run)
                                for x in calendar['InSampleStarts']]

    calendar['OutSampleStarts'] = [start_date + timedelta(days=in_sample_days_per_run) +
                                   timedelta(days=(out_of_sample_days_per_run * x))
                                   for x in range(runs)]
    calendar['OutSampleEnds'] = [x + timedelta(days=out_of_sample_days_per_run)
                                 for x in calendar['OutSampleStarts']]

    return calendar
但不幸的是,这段代码返回的值超出了结束日期。我想知道如何修复此错误

还有,我的测试电话

calendar = build_rolling_calendar(datetime(2016, 1, 1), datetime(2017, 5, 31), 25, 10)

如果第一张图像的意思是“白色块用于训练,彩色块用于验证”,这不就是交叉验证吗?你说得对。这个链接描述了这个过程