auto-sklearn案例解析二

来源:互联网 发布:知行中学在大连市排名 编辑:程序博客网 时间:2024/05/18 00:20

度量函数-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

中文翻译即学习笔记链接

  • 官网首页
  • AutoSklearn手册
  • autosklearn案例解析一
  • -
原创粉丝点击