StrailtKFold разделить поезд и размер набора проверки - PullRequest
0 голосов
/ 13 октября 2019

Я использую StratifiedKFold, и я не уверен, какой размер обучения и тестов вернул kfold.split в моем коде ниже. Предполагая, что Print(array.shape) возвращает (12904, 47), то есть количество строк равно 12904, а количество столбцов равно 47, каков будет размер обучения и теста?

kfold = StratifiedKFold(n_splits=5, shuffle=True, random_state=8)

for train, validation in kfold.split(X, Y):
            # Fit the model
            model.fit(X[train], Y[train])
            # predict probabilities for training set
            predicted = model.predict(X[train])

            predicted_report = classification_report(Y[train], predicted)
            print(predicted_report)
            # accuracy: (tp + tn) / (p + n)
            accuracy = accuracy_score(Y[train], predicted)#accuracy_score(Y[train], yhat_classes)

1 Ответ

1 голос
/ 14 октября 2019

Как уже указывалось в комментариях, размер вашего обучающего набора будет (n_splits-1)/n_splits, а размер вашего проверочного набора будет 1/n_splits от размера ваших исходных данных, то есть здесь 4/5 и 1/5 соответственно.

Вот простая воспроизводимая демонстрация с использованием данных диафрагмы и n_splits=5, как в вашем случае:

import numpy as np
from sklearn.model_selection import StratifiedKFold
from sklearn.datasets import load_iris

iris = load_iris()
X = iris.data
y = iris.target
print(X.shape) # initial dataset size
# (150, 4)

kfold = StratifiedKFold(n_splits=5, shuffle=True, random_state=8)

for train, validation in kfold.split(X, y):
            print(X[train].shape, X[validation].shape)

Результат, который составляет:

(120, 4) (30, 4)
(120, 4) (30, 4)
(120, 4) (30, 4)
(120, 4) (30, 4)
(120, 4) (30, 4)

Поэтому, чтобы проверить себя в своих данных, вам просто нужно добавить приведенный выше оператор print в цикл for.

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