我有一个经典User-Item dataset,其中每一行(即(user, item))表示用户单击/选择项目的操作。现在,数据集只提供正样本,并没有具体说明用户是否不喜欢某个项目。为了创建一个平衡的数据集,我想创建随机负样本(例如随机选择一组用户从未点击过的项目)。当然,我可以通过编写程序来实现;但是,我在 python Scikits 中发现了这个名为不平衡学习的库,它似乎提供了各种采样技术。有人可以提供一个可以使用这个库(或其他 python 库)来实现这一点的小代码片段吗?
使用 Scikits 创建平衡数据集
数据挖掘
Python
scikit-学习
阶级失衡
2022-02-14 03:48:01
2个回答
如果我理解正确,您想发明新的负样本来获得平衡的数据集,因为您当前的数据集只有正样本。
但是,您提到的库仅对所有类都存在的数据集进行重新采样。根据定义,样本创建过程是特定于数据的,因为可能存在不可能的属性组合等。
如果你想盲目地创建属性值的组合,你可以使用模块中的东西random:
- 要创建整数属性:
def random_integer(min_val, max_val): 返回 randint.randint(0, 9)) - 要创建实值属性:
def random_float(min_val, max_val): return random.uniform(min_val, max_val) - 要创建离散属性:
def 随机离散(值列表): 返回随机选择(值列表)
然后,通过循环,在循环中生成负样本:
def generate_negative_sample():
返回 {'attr1': random_discrete(['a', 'b', 'c']),
'attr2': random_float(-10., 10.),
'attr3': random_integer(0, 4)}
random_samples = [generate_negative_sample() for _ in range(1000)]
其它你可能感兴趣的问题