首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python层次化KFold

Python层次化KFold
EN

Stack Overflow用户
提问于 2020-06-17 03:00:41
回答 1查看 55关注 0票数 0

我有一个数据帧df,看起来像这样。我正在尝试使用逻辑回归对此数据进行建模,其中特征(f1-f6)是二进制的,目标也是二进制的。

代码语言:javascript
复制
f1 f2 f3 f4 f5 f6 target
0  0  1  1  0  1  0 
0  1  0  0  0  0  0 
0  1  1  1  1  0  1 
1  1  0  0  1  0  1 

根据我的理解,分层的K折叠确保在训练集和测试集中有良好均匀的标签分布。但我希望确保每个功能的分布也是均匀的。

例如,我可以有一个交叉表的某个功能,如下所示:

代码语言:javascript
复制
  target   0 1
f1 
0        240 125
1         11 18

正如您所看到的,f1为1有少量的出现,我希望确保它在测试和训练集中都合理地显示出来。我想要确保所有功能都是这样的。

我做了类似下面的事情(https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.StratifiedKFold.html)。但我认为这只会确保标签甚至没有考虑到功能不平衡。如何对数据进行交叉验证,以便在所有要素/标签上有一个合理均匀的分布?

代码语言:javascript
复制
import numpy as np
from sklearn.model_selection import StratifiedKFold
X = df[['f1','f2','f3','f4','f5','f6']]
y = df['target']
skf = StratifiedKFold(n_splits=2)
skf.get_n_splits(X, y)

StratifiedKFold(n_splits=5)
for train_index, test_index in skf.split(X, y):
     X_train, X_test = X.iloc[train_index], X.iloc[test_index]
     y_train, y_test = y.iloc[train_index], y.iloc[test_index]
]
EN

回答 1

Stack Overflow用户

发布于 2020-06-25 11:50:09

我使用了Jason Brownlee,机器学习精通,解释并展示了一个很好的简单的工作示例:

代码语言:javascript
复制
from sklearn.model_selection import KFold
import pandas as pd

data = {'f1': [0,0,0,1],
        'f2': [0,1,1,1],
        'f3': [1,0,1,0],
        'f4': [1,0,1,0],
        'f5': [0,0,1,1],
        'f6': [1,0,0,0],
        'target': [0,0,1,1]}

df = pd.DataFrame(data, columns=['f1','f2','f3','f4','f5','f6','target'])

print(df)

kfold = KFold(3, True, 1)

for train, test in kfold.split(data):
    print('train: %s, test: %s' % (train, test))

# scikit-learn k-fold cross-validation
from numpy import array
from sklearn.model_selection import KFold

# data sample
data = array([0, 0, 1, 1, 0, 1, 0])

# prepare cross validation
kfold = KFold(3, shuffle=True, random_state=1, )

# enumerate splits
for train, test in kfold.split(data):
    print('train: %s, test: %s' % (data[train], data[test]))

https://machinelearningmastery.com/k-fold-cross-validation/

以下是在Macbook Pro上使用Python3.8的PyCharm输出:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62415750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档