|
30 | 30 | from sklearn.model_selection import KFold
|
31 | 31 | from sklearn.model_selection import StratifiedKFold
|
32 | 32 | from sklearn.model_selection import LabelKFold
|
| 33 | +from sklearn.model_selection import HomogeneousTimeSeriesCV |
33 | 34 | from sklearn.model_selection import LeaveOneOut
|
34 | 35 | from sklearn.model_selection import LeaveOneLabelOut
|
35 | 36 | from sklearn.model_selection import LeavePOut
|
@@ -970,6 +971,32 @@ def test_label_kfold():
|
970 | 971 | next, LabelKFold(n_folds=3).split(X, y, labels))
|
971 | 972 |
|
972 | 973 |
|
| 974 | +def test_homogeneous_time_series_cv(): |
| 975 | + X2 = [[1, 2], [3, 4], [5, 6], [7, 8], [9, 10], [11, 12], [13, 14]] |
| 976 | + htscv = HomogeneousTimeSeriesCV(3) |
| 977 | + |
| 978 | + # Manually check that Homogeneous Time Series CV preserves the data ordering on toy datasets |
| 979 | + splits = htscv.split(X2[:-1]) |
| 980 | + train, test = next(splits) |
| 981 | + assert_array_equal(train, [0, 1]) |
| 982 | + assert_array_equal(test, [2, 3]) |
| 983 | + |
| 984 | + train, test = next(splits) |
| 985 | + assert_array_equal(train, [0, 1, 2, 3]) |
| 986 | + assert_array_equal(test, [4, 5]) |
| 987 | + |
| 988 | + splits = HomogeneousTimeSeriesCV(3).split(X2) |
| 989 | + train, test = next(splits) |
| 990 | + assert_array_equal(train, [0, 1, 2]) |
| 991 | + assert_array_equal(test, [3, 4]) |
| 992 | + |
| 993 | + train, test = next(splits) |
| 994 | + assert_array_equal(train, [0, 1, 2, 3, 4]) |
| 995 | + assert_array_equal(test, [5, 6]) |
| 996 | + |
| 997 | + # Check get_n_splits returns the number of folds - 1 |
| 998 | + assert_equal(2, htscv.get_n_splits()) |
| 999 | + |
973 | 1000 | def test_nested_cv():
|
974 | 1001 | # Test if nested cross validation works with different combinations of cv
|
975 | 1002 | rng = np.random.RandomState(0)
|
|
0 commit comments