美文网首页
sklearn-自定义评价指标(self-defined sco

sklearn-自定义评价指标(self-defined sco

作者: ab02f58fd803 | 来源:发表于2020-08-23 10:22 被阅读0次

    在进行超参数优化(hyperparameters optimazition)的时候,sklearn提供了GridSearchCVRandomizedSearchCV两种超参数的搜索方式,在这两种方法里面,除了estimator和params外, scoring是模型在评价模型不同参数组合时的重要评价指标,这个评价指标除了官方自定义外,我们还可以进行自定义.

    比如,在回归中,大部分使用的评价指标是RMSER2,这个在官方中是存在的,但是对于一些分类问题中的评价指标,或者我们做比赛过程中的评价指标往往需要我们自定义的.这里我自定义我做回归的RMSER2.

    1. 首先自定义函数比如my_rmse(y_true, y_pred),传入真实值和预测值,进行评价指标计算.注意,这里的名字要定义独特,防止与sklearn 类库出现重复的.
    2. make_scorer()放入自定义函数,参数greater_is_better表示这个数据越大模型越好, 比如回归中R2greater_is_better = True,rmsegreater_is_better = False.
    3. 在使用时, 一定要在函数名后面加上().
    def my_rmse(y_true, y_pred):
        rmse = np.sqrt(mean_squared_error(y_true, y_pred))
        #print('rmse: %.4f'%rmse)   
        return rmse
    
    def my_r2(y_true, y_pred):
        r2 = r2_score(y_true, y_pred)
        #print('r2: %.4f'%r2)    
        return r2
    
    def two_scorer(y_true, y_pred):
        my_rmse(y_true, y_pred)
        score = my_r2(y_true, y_pred)
        return score
    
    def two_scorers():
        
        return make_scorer(two_scorer, greater_is_better = True)
    
    def my_r2_scorer():
        
        return make_scorer(my_r2, greater_is_better = True)
    
    def my_rmse_scorer():
        
        return make_scorer(my_rmse, greater_is_better = False)
    
    
     clf = GridSearchCV(estimator = Catboost, scoring = my_r2_scorer(), param_grid = distributions, cv = train_cv, n_jobs = 4)
    

    Reference:
    How to create/customize your own scorer function in scikit-learn

    相关文章

      网友评论

          本文标题:sklearn-自定义评价指标(self-defined sco

          本文链接:https://www.haomeiwen.com/subject/yndijktx.html