auto-sklearn案例解析二

度量函数-metrics

auto-sklearn的度量函数是对sklearn度量函数的封装,我们即可以使用autosklearn已经封装好的metrics函数,也可以使用autosklearn的metrics函数封装器make_scorer函数封装我们自己的么metrics函数

使用autosklearn已经封装好的metrics函数

如果仅仅是获取的话,最简易的一种方式是直接去找源代码.你可以直接输入并点击autosklearn.metrics从而进入该方法的__Init__.py文件,在其中的第180行有使用make_scorer函数进行封装的源代码:

    # Standard regression scores
    r2 = make_scorer('r2', sklearn.metrics.r2_score)
    mean_squared_error = make_scorer('mean_squared_error',
                             sklearn.metrics.mean_squared_error,
                             greater_is_better=False)
    ......

    # Score functions that need decision values
    roc_auc = make_scorer('roc_auc', sklearn.metrics.roc_auc_score,
                  greater_is_better=True, needs_threshold=True)
    ......

二其中的r2则是autosklearn分类器的默认参数.如果我们想要使用这些函数的话,也十分的简单.下面就是一个使用正确率的函数

cls.fit(X_train, y_train, metric=autosklearn.metrics.accuracy)

不过根据autosklearn中的example,我们还可以使用以下代码直接获取相应的metrics函数的名字

        # Print a list of available metrics
        print("Available CLASSIFICATION metrics autosklearn.metrics.*:")
        print("\t*" + "\n\t*".join(autosklearn.metrics.CLASSIFICATION_METRICS))

        print("Available REGRESSION autosklearn.metrics.*:")
        print("\t*" + "\n\t*".join(autosklearn.metrics.REGRESSION_METRICS))

利用autosklearn的封装器,封装我们自己的metrics函数

如同前面所写,我们使用make_scorer封装我们自己的评价函数:

    def accuracy(solution, prediction):
        # function defining accuracy
        return np.mean(solution == prediction)


    def accuracy_wk(solution, prediction, dummy):
        # function defining accuracy and accepting an additional argument
        assert dummy is None
        return np.mean(solution == prediction)

        accuracy_scorer = autosklearn.metrics.make_scorer(name="accu_add",
                                                  score_func=accuracy, # 此处使用上面的那一个函数都可以
                                                  greater_is_better=True,
                                                  needs_proba=False,
                                                  needs_threshold=False,
                                                  dummy=None)
        cls = autosklearn.classification.\
        AutoSklearnClassifier(time_left_for_this_task=60,
                          per_run_time_limit=30, seed=1)
        cls.fit(X_train, y_train, metric=accuracy_scorer)

如前面所示,封装我们自己的评价函数或者说度量函数一共分为两步

  • 第一步,设置一个函数,参数最起码为二,格式如上
  • 第二步,使用make_scorer() 方法,制作我们自己的 scorer

其他常用函数

print(automl.show_models()):该语句的作用是展示最后我们获取的最佳模型
print(automl.sprint_statistics()):该语句的作用是展示模型的状态,该语句输出如下

    auto-sklearn results:

      Dataset name: digits
      Metric: accuracy
      Best validation score: 0.991011
      Number of target algorithm runs: 25
      Number of successful target algorithm runs: 0
      Number of crashed target algorithm runs: 0
      Number of target algorithms that exceeded the memory limit: 0
      Number of target algorithms that exceeded the time limit: 0

    **中文对照:**
    uto-sklearn结果:
    数据集名称:数字
    度量:准确性
    最好的验证分数:0.991011
    目标算法的运行次数:25
    成功的目标算法的数量:0
    目标算法的崩溃次数:0
    超过内存限制的目标算法数量:0
    超过时间限制的目标算法的数量:0

中文翻译即学习笔记链接

posted @ 2017-12-12 19:55  FontTian  阅读(254)  评论(0编辑  收藏  举报