簡體   English   中英

HyperOpt 多指標評估

[英]HyperOpt multi metric evalution

有誰知道是否有可能以某種方式計算 HyperOpt 中准確度以外的指標? 我還希望它顯示 F1、精度、召回率。 有沒有辦法做到這一點? 如果是這樣,請有人向我解釋一下。

def objective(space):
    pipe_params = {}
    
    for s in space:
        pipe_params[f"classifier__{s}"] = space[s]
        
    pipe.set_params(**pipe_params)
    score = cross_val_score(pipe, X_train, y_train, cv=10, scoring="accuracy",n_jobs=-1).mean()
    # Is there an option to add other metrics to the return 
    return {'loss': 1- score, 'status': STATUS_OK, 'accuracy': score}

trials_df = []
 
for cl in classifiers:
    cl_name = cl['class'].__class__.__name__
    print(f"\n\n{cl_name}")
    
    pipe = Pipeline(steps = [
    ('data_processing_pipeline', data_processing_pipeline),
    ('classifier', cl['class'])
    ])
    
    space = {}
    for k in cl['params']:
        space[k] = cl['params'][k]
    
    max_evals = cl['max_evals']
    
    trials = Trials()
    best = fmin(fn=objective,
                    space=space,
                    algo=tpe.suggest,
                    max_evals=max_evals,
                    trials=trials)
     
    best_params = space_eval(space, best)
    print('\nThe best params:')
    print ("{:<30} {}".format('Parameter','Selected'))
    for k, v in best_params.items():
        print ("{:<30} {}".format(k, v))
    
    for trial in trials.trials:
        trials_df.append({
            'classifier': cl_name,
            'loss': trial['result']['loss'],
            'accuracy': trial['result']['accuracy'],
            'params': trial['misc']['vals']
            })

這是我到 Github 的鏈接 如果有人想查看整個代碼: https : //github.com/mikolaj-halemba/Water-Quality-/blob/main/water_quality.ipynb

試試這些內置函數。

sklearn.metrics import precision_score,recall_score,f1_score

print(precision_score(y_test,y_pred))
print(recall_score(y_test,y_pred))
print(f1_score(y_test,y_pred))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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