Я слежу за ядром на Kaggle и наткнулся на этот код.
#Validation function
n_folds = 5
def rmsle_cv(model):
kf = KFold(n_folds, shuffle=True, random_state=42).get_n_splits(train.values)
rmse= np.sqrt(-cross_val_score(model, train.values, y_train, scoring="neg_mean_squared_error", cv = kf))
return(rmse)
Я понимаю цель и использование KFold и тот факт, что используется в 'cross_val_score'. Чего я не понимаю, так это почему используется get_n_split? Насколько мне известно, он возвращает количество итераций, использованных для перекрестной проверки, т.е. возвращает значение 5 в этом случае. Наверняка для этой строки:
rmse= np.sqrt(-cross_val_score(model, train.values, y_train, scoring="neg_mean_squared_error", cv = kf))
cv = 5? Это не имеет никакого смысла для меня. Почему даже необходимо использовать get_n_splits, если он возвращает целое число? Я думал, KFold возвращает класс , тогда как get_n_splits
возвращает целое число.
Кто-нибудь может очистить мое понимание?