predict_proba的输出是每个类别的概率,通常比decision_function的输出更容易理解,对于二分类问题,它的形状始终是(n_samples,2)。
import mglearn.tools
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.datasets import make_circles
import numpy as np
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as pltX,y=make_circles(noise=0.25,factor=0.5,random_state=1)y_named=np.array(['type0','type1'])[y]
#所有数组的划分方式都是一致的
X_train,X_test,y_train_named,y_test_named,y_train,y_test=train_test_split(X,y_named,y,random_state=0
)
#梯度提升模型
gbrt=GradientBoostingClassifier(random_state=0)
gbrt.fit(X_train,y_train_named)print('predict_proba 形状:{}'.format(gbrt.predict_proba(X_test).shape))
print('predict_proba:{}'.format(gbrt.predict_proba(X_test)[:5]))
可以从结果看到,每行的第一个元素是第一个类别的估计概率,第二个元素是第二个类别的估计概率,两个类别的概率之和始终为1.
从结果可以看到,分类器对大部分点的置信程度都是相对比较高的,不确定度大小实际反映了数据依赖于模型和参数的不确定度。如果模型给出的不确定度符合实际情况,那么这个模型被称为校正模型,在校正模型中,如果预测有70%的确定度,那么它在70%的情况下正确。