《Python机器学习基础教程》笔记
Scikit-Learn接口的一个有用之处就是分类器能够给出预测的不准确定估计,即分类器预测某个测试点属于某个类别的置信程度。
Scikit-Learn中有两个函数可以用于获取分类器的不确定度估计:decision_function和predict_proba。大多数分类器都至少有其中一个函数。下面对这两个函数进行简单的介绍:
1.decision_function(决策函数)
①对于二分类的情况,decision_function(决策函数)返回值的形状是(n_samples,),注意这是一个一维数组,它为每个样本都返回一个浮点数,正值表示对“正类”(classes_属性的第二个元素)的置信程度,负值表示对“负类”(classes_属性的第一个元素)的置信程度,绝对值越大表示置信度越高。对于多分类情况,decision_function(决策函数)返回值的形状是(n_samples,n_classes),每一列对应每个类别的“确定性分数”,分数较高的类别可能性更大。
②decision_function(决策函数)的输出可以在任意范围取值。
2.predict_proba(预测概率)
①predict_proba(预测概率)的输出是每个类别的概率,总是在0~1之间,两个类别的元素之和始终为1,因此比decision_function的输出更容易理解。
②predict_proba(预测概率)不管二分类还是多分类,返回值的形状均为(n_samples,n_classes)。
将这两个函数应用于鸢尾花数据集为例演示如何使用Scikit-Learn:
from sklearn.datasets import load_iris
from sklearn.ensemble import GradientBoostingClassifier
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) #实例化梯度提升回归树
gbrt.fit(X_train,y_train) #训练模型
print("Decision function shape:\n{}".format(gbrt.decision_function(X_test).shape))
print("Decision function :\n{}".format(gbrt.decision_function(X_test)[:6])) #显示决策函数的前6个元素
print("Predicted probabilities :\n{}".format(gbrt.predict_proba(X_test)[:6])) #显示预测概率的前6个元素
运行结果如下: