Не уверен насчет цели get_n_splits и почему это необходимо - PullRequest
0 голосов
/ 25 апреля 2020

Я слежу за ядром на 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 возвращает целое число.

Кто-нибудь может очистить мое понимание?

1 Ответ

2 голосов
/ 25 апреля 2020

Я думал, что KFold возвращает класс, тогда как get_n_splits возвращает целое число.

Конечно, KFold - это класс, а один из методов класса - get_n_splits, который возвращает целое число; показанная вами kf переменная

kf = KFold(n_folds, shuffle=True, random_state=42).get_n_splits(train.values)

не является объектом класса KFold, это результат KFold().get_n_splits() метода , и это действительно целое число. Фактически, если вы проверяете документацию , get_n_splits() даже не нуждается ни в каких аргументах (они фактически игнорируются и существуют только для совместимости с другими классами и методами).

As для сомнительной полезности метода get_n_splits не является плохой идеей иметь возможность запрашивать такие объекты класса, чтобы получить обратно настройки их параметров (наоборот); представьте себе ситуацию, когда у вас есть несколько различных KFold объектов, и вам необходимо программно получить их соответствующее число сгибов CV в потоке программы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...