[机器学习]概率模型的可靠性曲线及校准

更新时间:2023-07-27 19:17:07 阅读: 评论:0

[机器学习]概率模型的可靠性曲线及校准
1.什么是可靠性曲线?
可靠性曲线是⼀个概率类模型的评估指标,适⽤于朴素贝叶斯,SVM,逻辑回归等概率类算法。是以y预测值为横坐标,y真实值为纵坐标的曲线。
因此当我们画出的可靠性曲线越接近对⾓线时,我们认为这个学习器的性能越好。
2. 代码展⽰
sklearn的可靠性曲线和学习曲线相同都是不能直接画图⽽是返回画图所需要的值,因此下⾯代码是根据calibration_curve返回的值对三个算法的可靠性曲线的探索。
from sklearn.datats import make_classification as mc
import matplotlib.pyplot as plt
from sklearn.naive_bayes import GaussianNB # 导⼊⾼斯朴素贝叶斯
from sklearn.svm import SVC
from sklearn.linear_model import LogisticRegression as LR
ics import brier_score_loss # 导⼊布⾥尔分数
del_lection import train_test_split
from sklearn.calibration import calibration_curve # 对概率类模型进⾏校准,⽅法是分箱
#创建数据
x,y = mc(n_samples=100000,
n_features=20,
n_class=2,
小麦分蘖n_repeated=10,# 10个特征⽆⽤
random_state=420)
xtrain,xtest,ytrain,ytest = train_test_split(x,y,test_size=0.9,random_state=420)#在朴素贝叶斯当中训练集可以⾮常的⼩#print(np.unique(ytrain))
name =["GaussianBayes","Logistic","SVC"]
gnb = GaussianNB()
logi = LR()
svc = SVC(kernel="linear",gamma =1)
20年后#开始画图
fig,ax1 = plt.subplots(figsize =(8,6))
四眼鱼
ax1.plot([0,1],[0,1],label ="Perfectly calibrated")# 绘制对⾓线,把(0,0),(1,1)连起来
阳光生活for clf,name_ in zip([gnb,logi,svc],name):
clf.fit(xtrain,ytrain)
y_pred = clf.predict(xtest)六爻卜卦
if hasattr(clf,"predict_proba"):#对象⾥如果有这个接⼝
prob_pos = clf.predict_proba(xtest)[:,1]
el:#就是针对SVM
prob_pos = clf.decision_function(xtest)
prob_pos =(prob_pos-prob_pos.min())/(prob_pos.max()-prob_pos.min())#⼿动归⼀化
clf_score = brier_score_loss(ytest,prob_pos,pos_label=y.max())
#对只有0,1的标签值进⾏分箱后才能画图
trueproba, predproba = calibration_curve(ytest, prob_pos, n_bins=10)
ax1.plot(predproba,trueproba,"s-",label ="%s(%1.3f)"%(name_,clf_score))
ax1.t_ylabel("True probability for class 1")
ax1.t_xlabel("Mean Predcited probability")
美国斯坦福
ax1.t_ylim([-0.05,1.05])
ax1.legend()
plt.show()
3.结果展⽰及解释
由此我们可以看出Logistic对这种概率分类问题有着天然的优势
4. 改进
4.1如果只关系⼀两个算法的话,可以在calibration_curve使⽤对n_bins进⾏调参来达到更好的效果。抱歉的句子
当可靠性曲线过于粗糙的时候可以适当的降低n_bins的值,来使曲线变得更为平滑
4.2 校准可靠性曲线,这是sklearn中⾃带的接⼝,⽤于校准可靠性曲线。
from sklearn.calibration import CalibratedClassifierCV
重要参数:
best_estimator :需要校准其输出决策功能的分类器党费收缴自查报告
cv: 交叉验证的参数,对每⼀组数都进⾏概率估计和校准,然后返回最佳的那⼀组参数估计和校准。
method:就两个,具体不⽤深究,试试那个好使就⽤那个。分别是:sigmoid,isotonic.如果样本数量太少,不建议使⽤isotonic,容易过拟合。使⽤的功能和其他的sklearn的算法相同。
#拿朴素贝叶斯⽤isotonic⽅法进⾏校准
gnbisotonic = CalibratedClassifier(gnb,cv =3,method ='isotonic').fit(xtrain,ytrain)
gnbisotonic.score(xtest,ytest)

本文发布于:2023-07-27 19:17:07,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/1120514.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:曲线   可靠性   概率   校准   画图   学习   算法   模型
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图