簡體   English   中英

如何在 sklearn_crfsuite 中設置隨機種子

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM