class TimeSeriesValidator(Validator):def create_folds(self, feature_set, splitter):date = feature_set.aux['date'].sort_values().index.valuesfor idx_train, idx_test in splitter.split(date):yield date[idx_train], date[idx_test]
class GroupValidator(Validator):def create_folds(self, feature_set, splitter):y = feature_set.targetgroup = feature_set.aux['group'].valuesfor idx_train, idx_test in splitter.split(X=y, y=y, group=group):yield idx_train, idx_test
class GroupMetricValidator(Validator):def evaluate(self, y_true, y_pred, feature_set_fold):group = feature_set_fold.aux['group'].valuesreturn self.metric(y_true, y_pred, group=group)