【发布时间】:2020-07-16 09:19:17
【问题描述】:
这是我在 stackoverflow 中的第一个问题。
我是 python 新手,我正在尝试实现链接预测问题。
我有一个这样的列表:
list_pos = [('alpha', 'beta'),
('beta','gama')
('alpha','lamda')
('gama', 'lamda'),
('euphor', 'tuphor')]
而且,我能够生成以前不存在的元组对的负例,如下所示:
from itertools import combinations
elements = list(set([e for l in list_pos for e in l])) # find all unique elements
complete_list = list(combinations(elements, 2)) # generate all possible combinations
#convert to sets to negate the order
set1 = [set(l) for l in list_pos]
complete_set = [set(l) for l in complete_list]
# find sets in `complete_set` but not in `set1`
list_neg = [list(l) for l in complete_set if l not in set1]
输出在这里:
list_neg =
[['gama', 'tuphor'],
['gama', 'alpha'],
['gama', 'euphor'],
['lamda', 'tuphor'],
['alpha', 'tuphor'],
['beta', 'tuphor'],
['euphor', 'lamda'],
['lamda', 'beta'],
['euphor', 'alpha'],
['euphor', 'beta']]
但是,这会导致以下结果 - 对于 5 个正例,我有 10 个负例。
随着原始列表中的项目越来越多,最终我将得到一个高度不平衡的数据集,其中包含大量负面示例,这将影响我的模型训练分数。
我的问题是 - 如何准确地训练这种不平衡的数据集。
为了生成我的最终数据集,我使用以下 -
dflp = pd.DataFrame(list_pos, columns=['user1','user2'])
dflp['link'] = 1
dfln = pd.DataFrame(list_neg, columns=['user1','user2'])
dfln['link'] = 0
df_n = pd.concat([dflp, dfln])
df_n.head()
这样我就有了一个适合应用逻辑回归的数据集
【问题讨论】:
标签: python list dataframe training-data