福田网站制作公司,具有价值的建网站,做的网站不能放视频播放器,好的建设网站公司scikit-learn接口的分类器能够给出预测的不确定度估计#xff0c;一般来说#xff0c;分类器会预测一个测试点属于哪个类别#xff0c;还包括它对这个预测的置信程度。 scikit-learn中有两个函数可以用于获取分类器的不确定度估计#xff1a;decidion_function和predict_pr… scikit-learn接口的分类器能够给出预测的不确定度估计一般来说分类器会预测一个测试点属于哪个类别还包括它对这个预测的置信程度。 scikit-learn中有两个函数可以用于获取分类器的不确定度估计decidion_function和predict_proba。 以一个二维数据集为例
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,ymake_circles(noise0.25,factor0.5,random_state1)y_namednp.array([type0,type1])[y]
#所有数组的划分方式都是一致的
X_train,X_test,y_train_named,y_test_named,y_train,y_testtrain_test_split(X,y_named,y,random_state0
)
#梯度提升模型
gbrtGradientBoostingClassifier(random_state0)
gbrt.fit(X_train,y_train_named)对于二分类的情况decidion_function返回值的形状是(n_samples,)为每个样本都返回一个浮点数
print(X_test形状:{}.format(X_test.shape))
print(Decision_function 形状{}.format(gbrt.decision_function(X_test).shape)) 对于类别1来说值代表模型对数据点属于“正”类的置信程度。正值代表对正类的偏好负值代表对反类的偏好还可以通过查看决策值的正负号来展示预测值
print(Decision_function:{}.format(gbrt.decision_function(X_test)[:10]))
print(正负-Decision_function:{}.format(gbrt.decision_function(X_test)0))
print(分类:{}.format(gbrt.predict(X_test))) 对于二分类问题反类始终是classes_属性的第一个元素正类是第二个元素因此如果想要完全再现predict的输出需要利用classes_属性
greater_zore(gbrt.decision_function(X_test)0).astype(int)
predgbrt.classes_[greater_zore]
print(索引是否与输出相同{}.format(np.all(predgbrt.predict(X_test)))) decidion_function可以在任意范围取值取决于数据和参数模型
decision_functiongbrt.decision_function(X_test)
print(decision_function结果的最大值和最小值:{:.3f}、{:.3f}.format(np.max(decision_function),np.min(decision_function)))利用颜色编码画出所有点的decidion_function还有决策边界
plt.rcParams[font.sans-serif][SimHei]
plt.rcParams[axes.unicode_minus] False
fig,axesplt.subplots(1,2,figsize(13,5))
mglearn.tools.plot_2d_separator(gbrt,X,axaxes[0],alpha.4,fillTrue,cmmglearn.cm2)
scores_imagemglearn.tools.plot_2d_scores(gbrt,X,axaxes[1],alpha.4,cmmglearn.ReBl)
for ax in axes:mglearn.discrete_scatter(X_test[:, 0], X_test[:, 1], y_test, markers^, axax)mglearn.discrete_scatter(X_train[:, 0], X_train[:, 1], y_train, markerso, axax)ax.set_xlabel(特征0)ax.set_ylabel(特征1)
cbarplt.colorbar(scores_image,axaxes.tolist())
axes[0].legend([测试分类0,测试分类1,训练分类0,训练分类1],ncol4,loc(.1,1.1))
plt.show()