python - Python平衡多指标数据
问题描述
我有一个结构类似于示例中的数据框:
import pandas as pd
import numpy as np
df = {'class': [1, 1, 1, 2, 2, 1, 1, 3, 3, 3, 2, 2],
'letter': ['a', 'a', 'a', 'b', 'b', 'c', 'c', 'd', 'd', 'd', 'e', 'e'],
'value1': [0.97, 0.43, 0.67, 0.02, 0.75, 0.34, 0.43, 0.36, 0.40, 0.92, 0.95, 0.64],
'value2': [0.16, 0.83, 0.62, 0.2, 0.48, 0.36, 0.67, 0.91, 0.9, 0.75, 0.5, 0.99],
}
df = pd.DataFrame(df).set_index(['number', 'letter'])
print(df)
value1 value2
class letter
1 a 0.97 0.16
a 0.43 0.83
a 0.67 0.62
2 b 0.02 0.20
b 0.75 0.48
1 c 0.34 0.36
c 0.43 0.67
3 d 0.36 0.91
d 0.40 0.90
d 0.92 0.75
2 e 0.95 0.50
e 0.64 0.99
我想根据相同类别组的最小出现次数(N)随机平衡它(在示例中,类别 3,仅发生 N=1 次)。在这种情况下,我的预期结果可能是这样的:
value1 value2
class letter
1 a 0.97 0.16
a 0.43 0.83
a 0.67 0.62
2 e 0.95 0.50
e 0.64 0.99
3 d 0.36 0.91
d 0.40 0.90
d 0.92 0.75
其中每个类出现 N 次(在这种情况下为 1 次)并且要丢弃的类/字母组合的选择是随机的(但保持字母值的一致性)。
我试过使用RandomUnderSampler,但它不适用于多索引。我为类似问题找到的所有可能的解决方案都是在一个类的所有条目中随机抽样,忽略类字母分组。
有什么想法/经验吗?
解决方案
推荐阅读
- postgresql - 如何在 timestampz 列中插入 UTC 值
- c# - 查询不更新表
- ruby-on-rails - 在 Rails 控制器中处理选项
- python - Python 中 Azure Functions 上的文件操作
- java - 无法在 Android recyclerview 中使用 Picasso 从 Firestore 加载图像
- ios - 如何缩放和居中 UIBezierPath?
- word2vec - 使用 Fast-text 从同义词集中查找同义词
- java - Java 日历时区
- .net - MathNet.Numerics.LinearAlgebra 库可以在 Visual Studio 2019 中使用吗?
- apache-spark - 火花非确定性和重新计算安全