[英]How to set random seed in sklearn_crfsuite
我目前正在嘗試使用sklearn_crfsuite
庫來實現 NER model。
訓練代碼簡單如下:
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 個不同的分數並將它們平均作為最終分數。 然而,每次重復都會給出相同的分數,盡管我在每個循環中重新初始化了 model。
問題是,我如何正確設置隨機種子,以便每次重復都能給出不同的結果?
您不搜索隨機種子,您可能會搜索交叉驗證:
您可以在此處找到完整的文檔。
如果你想運行 10 次不同的迭代,你可以使用:
crf = sklearn_crfsuite.CRF(
algorithm='lbfgs',
max_iterations=100,
all_possible_transitions=True,
verbose=True
)
params_space = {
'c1': scipy.stats.expon(scale=0.5),
'c2': scipy.stats.expon(scale=0.05),
}
# use the same metric for evaluation
f1_scorer = make_scorer(metrics.flat_f1_score,
average='weighted', labels=labels)
# search
rs = RandomizedSearchCV(crf, params_space,
cv=10,
verbose=1,
n_jobs=-1,
n_iter=50,
scoring=f1_scorer)
rs.fit(X_train, y_train)
你會得到最好的參數
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.