【机器学习】(十二)分类器的不确定度估计
程序员文章站
2022-05-20 19:35:05
...
分类器:不确定度估计
分类器不仅能够给出测试点属于哪一个类别,还包括它对这个预测的置信程度。
scikit-learn提供了两个函数可以用于获取分类器的不确定度估计函数:(大部分分类器至少含有其中一个)
决策函数decision_function:
二分类问题返回形状为(n_samples, ),为每个样本返回一个浮点数。正值表示对正类(classes_[1])的偏好,负值对应其反类(classes_[0])。
多分类问题返回形状(n_samples,n_classes),每一列对用每个类别的确定度分数(浮点数)。
n_samples是样本数,n_classes是类别数。
浮点数的值可以在任意范围,取决于数据于模型参数。分数较高的可能性大,为预测结果。
预测概率predict_proba:
返回形状(n_samples,n_classes),返回为0-1之间的类别概率。每个样本类别概率和为1。预测结果为类别概率大的分类。
如果模型给出的不确定度符合实际情况,那么这个模型被称为校正模型。
在Iris数据集上应用GradientBoostingClassifier分类器
不确定度:
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
iris = load_iris()
x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target, random_state=42)
gbrt = GradientBoostingClassifier(learning_rate=0.01, random_state=0).fit(x_train, y_train)
print(gbrt.decision_function(x_test).shape)
print(gbrt.decision_function(x_test)[:6, :])
print(gbrt.predict_proba(x_test).shape)
print(gbrt.predict_proba(x_test)[:6, :])
预测结果:numpy.argmax(array, axis) 用于返回一个numpy数组中最大值的索引值。