分层折叠分体式列车和验证装置siz

2024-04-20 15:36:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用StratifiedKFold,我不确定{}在下面的代码中返回的训练和测试大小是多少。假设cd4{i>的列数是多少?在

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)

Tags: 代码reportformodeltrainpredictscoreshuffle
1条回答
网友
1楼 · 发布于 2024-04-20 15:36:34

正如评论中已经暗示的,您的训练集大小将是(n_splits-1)/n_splits,而您的验证集大小将是您初始数据大小的1/n_splits,即这里分别是4/5和1/5。在

下面是一个使用iris数据和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)

其结果是:

^{pr2}$

因此,要在数据中检查自己,只需在for循环中添加上面的print语句。在

相关问题 更多 >