scikit-learn 接口的另一个功能作用是:分类器能够给出预测的不确定度估计。
通常,我们不仅对分类器会预测一个测试点属于哪个类别感兴趣,同时还会关注这个预测的置信程度。在实践中,不同类型的错误会在现实应用中导致差异很大的结果。例如:一个用于测试癌症的医疗应用,假阳性预测可能只会让患者接受额外的治疗,但假阴性预测却可能导致重病没有得到治疗。
scikit-learn 中有两个函数可用于获取分类器的不确定度估计:decision_function 和 predict_proba。大多数分类器都至少有其中一个函数,很多分类器两个都有。下面来构建一个 GradientBoostingClassifier 分类器(同时拥有 decision_function 和 predict_proba 两个方法),看一下这两个函数对一个模拟的二维数据集的作用:
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.datasets import make_circles
X, y = make_circles(noise=0.25, factor=0.5, random_state=1)
# 为了便于说明,我们将两个类别重命名为"blue"和"red"
y_named = np.array(["blue", "red"])[y]
# 我们可以对任意个数组调用train_test_split
# 所有数组的划分方式都是一致的
X_train, X_