use*_*844 9 python pandas scikit-learn
在Pandas或Scikit中是否有内置函数 - 根据指定的策略学习重新采样?我想根据分类变量重新采样我的数据.
例如,如果我的数据有75%的男性和25%的女性,但我想训练我的模型50%的男性和50%的女性.(我也希望能够推广到非50/50的案例)
我需要的是根据指定的比例重新采样我的数据.
小智 1
分层抽样意味着保留类别分布。如果您正在寻找这个,您仍然可以使用StratifiedKFoldand StratifiedShuffleSplit,只要您有一个分类变量并希望确保每个折叠具有相同的分布。只需使用变量而不是目标变量即可。例如,如果列中有一个分类变量i,
skf = cross_validation.StratifiedKFold(X[:,i])
Run Code Online (Sandbox Code Playgroud)
但是,如果我理解正确的话,您想要重新采样到分类特征之一的特定目标分布(例如 50/50)。我想您必须想出自己的方法来获取这样的样本(按变量值分割数据集,然后从每个分割中获取相同数量的随机样本)。如果您的主要动机是平衡分类器的训练集,那么调整sample_weights. 您可以设置权重,以便它们根据所需的变量平衡训练集:
sample_weights = sklearn.preprocessing.balance_weights(X[:,i])
clf = svm.SVC()
clf_weights.fit(X, y, sample_weight=sample_weights)
Run Code Online (Sandbox Code Playgroud)
对于不均匀的目标分布,您必须相应地调整样本权重。
| 归档时间: |
|
| 查看次数: |
7655 次 |
| 最近记录: |