【发布时间】:2020-06-01 21:16:32
【问题描述】:
我有一个如下所示的数据集:
它显示了哪家商店出售了哪本书。
import pandas as pd
books = {'shop': ["A", "B", "C", "D", "E", "A", "B", "C", "D",],
'book_id': [1, 1, 2, 3, 3, 3, 4, 5, 1,]
}
df = pd.DataFrame(books, columns = ['shop', 'book_id'])
这是印刷品:
shop book_id
0 A 1
1 B 1
2 C 2
3 D 3
4 E 3
5 A 3
6 B 4
7 C 5
8 D 1
在数据集中,
- 店铺A卖1、3
- 店铺B卖1、4
- 店铺C卖2、5
- 店铺D卖3、1
- 店铺E只卖3个
所以现在,我想在这里计算 Jaccard 指数。例如,我们以 shop A 和 shop B 为例。 A 和 B 出售 三本 不同的书(书 1、书 3、书 4)。但是,两家商店只出售 一种 产品(这是产品 1)。所以,这里的 Jaccard 指数应该是 33.3% (1/3)。
这是所需数据的示例:
result = {'shop_1': ["A", "B", "A", "C", "A", "D", "A", "E",],
'shop_2': ["B", "A", "C", "A", "D", "A", "E", "A",],
'jaccard': [33.3, 33.33, 0, 0, 100, 100, 50, 50,]
}
desired_df = pd.DataFrame(result, columns = ['shop_1', 'shop_2', 'jaccard'])
Print
shop_1 shop_2 jaccard
0 A B 33.30
1 B A 33.33
2 A C 0.00
3 C A 0.00
4 A D 100.00
5 D A 100.00
6 A E 50.00
7 E A 50.00
. . . .
. . . .
. . . .
有人可以帮我做这件事吗?有没有实现 Jaccard 索引的库?
【问题讨论】:
-
Scipy 可能会有所帮助:docs.scipy.org/doc/scipy/reference/generated/…
-
感谢@PrateekDewan,我尝试通过手动输入示例数据来实现它,但由于我是 Python 初学者,因此很难操作真实数据。
标签: python pandas machine-learning