auto-sklearn的度量函数是对sklearn度量函数的封装,我们即可以使用autosklearn已经封装好的metrics函数,也可以使用autosklearn的metrics函数封装器make_scorer函数
封装我们自己的么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))
如同前面所写,我们使用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)
如前面所示,封装我们自己的评价函数或者说度量函数一共分为两步
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