我想生成1000个包含商品的购物篮,其中每个商品都属于不同的类别,并且根据其销量具有不同的排名。考虑到它们的排名,首先,我想分配商品的概率,以表示该商品在购物篮中的可能性。然后,根据这些概率和类别比率约束,我要生成1000个篮子,所有篮子的最大值为100 $。
我尝试了最大似然函数来生成概率,但是我无法处理它。我需要在Python 3.6中编写此代码。我的示例数据框是:
data = [[1, 10,'fruit',1],[2, 15,'fruit',2],[3, 8,'fruit',3],[4,20,'fruit',4],[5, 30,'fruit',5],[6, 20,'drink',6],[7, 10,'drink',7],[8, 25,'drink',8],[9, 20,'drink',9],[10, 13,'drink',10],[11, 20,'food',11],[12, 12,'food',12],[13, 18,'food',13],[14, 3,'food',14],[15, 5,'food',15]]
df = pd.DataFrame(data, columns = ['item_id', 'price','category','rank'])
print(df)
首先,我希望针对每个类别的排名产生概率。例如,等级1的概率= 0.3,等级2的概率= 0.25,等级3的概率= 0.2,等级4的概率= 0.15和等级5的概率= 0.1(总和等于1)。
然后,我有购物篮的情况,购物篮的总价值来自50%的食物,30%的饮料和20%的水果,预算约束= 100 $。即,一篮最多包括50美元的食物,30美元的饮料和20美元的水果。
如果我手动生成一个篮子,结果将是:
From fruit category(20$): **2 units of item 1** (price=10, quantity=2, total_value=20$)
From drink category(30$): **1 units of item 6** (price=20, quantity=1, total_value=20$), **1 units of item 7** (price=10, quantity=1, total_value=10$)
From food category(50$):**1 units of item 11** (price=20, quantity=1, total_value=20$),**1 units of item 12** (price=12, quantity=1, total_value=12$),**1 units of item 13** (price=18, quantity=1, total_value=18$)
通常,我有3500个项目和20个类别。如何在Python 3.6中为给定约束生成概率函数和1000个篮子?