gpt4 book ai didi

python - 异构 DataFrame 上的 StratifiedKfold

转载 作者:行者123 更新时间:2023-11-28 20:04:06 30 4
gpt4 key购买 nike

我有一个 pandas DataFrame,其中包含需要拆分成平衡切片的字符串和浮点列,以便训练 sklearn 管道。

理想情况下,我会使用 StratifiedKFold在 DataFrame 上获取更小的数据 block 以进行交叉验证。但它提示说我有不可排序的类型,像这样:

import pandas as pd
from sklearn.cross_validation import StratifiedKFold

dataset = pd.DataFrame(
[
{'title': 'Dábale arroz a la zorra el abad', 'size':1.2, 'target': 1},
{'title': 'Ana lleva al oso la avellana', 'size':1.0, 'target': 1},
{'title': 'No te enrollé yornetón', 'size':1.4, 'target': 0},
{'title': 'Acá sólo tito lo saca', 'size':1.4, 'target': 0},
])
skfs = StratifiedKFold(dataset, n_folds=2)

>>> TypeError: unorderable types: str() > float()

有很多方法可以获取折叠索引并在 DataFrame 上进行切片,但我认为这不能保证我的类将是平衡的。

拆分 DataFrame 的最佳方法是什么?

最佳答案

StratifiedKFold 需要分割数,.split() 方法使用标签的类分布对样本进行分层。假设您的 labeltarget,您将:

from sklearn.model_selection import StratifiedKFold
skf = StratifiedKFold(n_splits=2)
X=dataset.drop('target', axis=1)
y=dataset.target
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]

关于python - 异构 DataFrame 上的 StratifiedKfold,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38016303/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com