我目前正在尝试使用sklearn_crfsuite
库实现 NER 模型。
训练代码简单如下:
for repeat in range(10):
crf = sklearn_crfsuite.CRF(
algorithm='lbfgs',
c1=0.1,
c2=0.1,
max_iterations=100,
all_possible_transitions=True,
verbose=True
)
crf.fit(X_train, y_train)
pred_list = crf.predict(X_test)
代码是做十次重复训练,我的目标是观察 10 个不同的分数并将它们平均作为最终分数。然而,每次重复都会给出相同的分数,尽管我在每个循环中重新初始化了模型。
问题是,我如何正确设置随机种子,以便每次重复都能给出不同的结果?
注意:在每个循环中对训练数据进行混洗后,它仍然给出相同的结果。最后,我将训练算法从
'lbfgs'
(使用 L-BFGS 方法的梯度下降)更改为'l2sgd'
(使用 L2 正则化的随机梯度下降),然后我开始获得不同的结果。