我有一个pandas DataFrame,它包含字符串和浮点数,需要拆分成 balancer 切片才能训练sklearn管道 .
理想情况下,我会在DataFrame上使用StratifiedKFold来获取更小的数据块以进行交叉验证 . 但它抱怨我有无法解决的类型,如下所示:
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进行切片,但我认为这并不能保证我的类会得到 balancer .
拆分DataFrame的最佳方法是什么?
2 回答
sklearn.cross_validation.StratifiedKFold
自版本0.18起不推荐使用,将在0.20中删除 . 所以这是另一种方法:StratifiedKFold
需要分割数,.split()
方法使用标签的类分布来对样本进行分层 . 假设您的label
是target
,您会: