首页 > 编程知识 正文

python多项式拟合曲线,matlab非线性最小二乘法拟合

时间:2023-05-04 04:24:29 阅读:111193 作者:4257

注意:单击此处https://urlify.cn/muQBjy下载完整的示例代码,或使用Binder在浏览器中运行示例

在进行分类时,人们不仅要预测分类标签,还往往要预测相关概率。 预测概率可以使预测分类标签有信心。 此示例说明如何显示预测概率的校准级别,以及如何校准未校准的分类器。

该实验在100,000个样本中有1,000个用于模型训练,并在具有20个特征的二分类人工数据集上进行。 这20个特征中,具有信息性的只有2个,10个是冗馀的。 第一张图显示了逻辑回归、高斯朴素贝叶斯、等渗校准(isotonic calibration )和sigmoid校准(sigmoid calibration )高斯朴素贝叶斯预测概率。 根据图例中记载的Brier得分来评价校准。 越小越好。 在这里逻辑回归被很好地校正了,与此相对,可以观察到原始的高斯朴素贝叶斯并不顺利。 这是因为额外的特征违反了特征独立性假设,导致分类器过于自信,是典型的转置sigmoid型曲线。

从接近对角线的标准曲线可以看出,使用等渗回归的高斯白噪声概率的校准可以解决这个问题。 尽管sigmoid校准不如诸如非参数的渗透回归强,但是可以稍微改进brier得分。 这是因为我们有大量的校准数据,所以利用非参数模型的灵活性更高。

第二个图显示了线性支持向量分类器(LinearSVC )的标准曲线。 线性支持向量分类器(LinearSVC )表现出与高斯朴素贝叶斯相反的行为。 标准曲线是具有sigmoid形的曲线,这对于不可靠的识别器来说是典型的曲线。 对于在线支持向量分类器(LinearSVC ),这是由于页面丢失的边距属性。 根据这个属性,页面丢失)可以集中在与决策边界)支持向量)相近的硬样本) hard samples )上。

两种校准都解决了这个问题,得到了几乎相同的结果。 虽然这可对应于基本鉴别器的校准曲线为sigmoid的情况(例如线性支持向量分类器LinearSVC ),但是可将其放在sigmoid形式(高斯-朴素贝叶斯)上

输出: logistic : brier :099 precision :872 recall :851 f 1:862朴素贝叶斯: brier :118 precision 3360.8360 f 1: C : brier :098 precision :883 recall :836 f 1:859 naivebayessigmoid 3360 brier :861 recall 3360.871 f 1: ier :099 precision :872 recall :851 f 1:862 SVC 336360.862 re cision :872 recall 3360.852 f 1:862 SVC isotonic 3360 ion :853 recall :878 f 1:865 SVC 3360.865 SVC0brier :099 precision :849 f 1:861 print (_ _ dau DD 作者:Alexandregramfort# JanHendring许可证: BSD style.importmatplotlib.pyplotaspltfromsklearnimportdatasetsfromsklearn.naive _ bayesimportgausive nbfromsk svcfromsklearn.linear _ modelimportlogisticregressionfromsklearn.metrics import (brier _ score _ loss ), precision _ score f1 _ score (froms klearn.calibrationimportcalibratedclassifiercv,calibration _ curvefromsklearn.moded ) y=datasets.make _ class ification (n _ samples=100000,n_features=20,n_informative=2)即X_test,y,

"""Plot calibration curve for est w/o and with calibration. """# 等渗校准isotonic = CalibratedClassifierCV(est, cv=2, method="isotonic")# sigmoid校准sigmoid = CalibratedClassifierCV(est, cv=2, method="sigmoid")# 做为基准的没有校准的逻辑回归lr = LogisticRegression(C=1.)fig = plt.figure(fig_index, figsize=(10, 10))ax1 = plt.subplot2grid((3, 1), (0, 0), rowspan=2)ax2 = plt.subplot2grid((3, 1), (2, 0))ax1.plot([0, 1], [0, 1], "k:", label="Perfectly calibrated")for clf, name in [(lr, "Logistic"),(est, name),(isotonic, name + " + Isotonic"),(sigmoid, name + " + Sigmoid")]:clf.fit(X_train, y_train)y_pred = clf.predict(X_test)if hasattr(clf, "predict_proba"):prob_pos = clf.predict_proba(X_test)[:, 1]else: # 使用决策函数prob_pos = clf.decision_function(X_test)prob_pos = (prob_pos - prob_pos.min()) / (prob_pos.max() - prob_pos.min())clf_score = brier_score_loss(y_test, prob_pos, pos_label=y.max())print("%s:" % name)print("tBrier: %1.3f" % (clf_score))print("tPrecision: %1.3f" % precision_score(y_test, y_pred))print("tRecall: %1.3f" % recall_score(y_test, y_pred))print("tF1: %1.3fn" % f1_score(y_test, y_pred))fraction_of_positives, mean_predicted_value = calibration_curve(y_test, prob_pos, n_bins=10)ax1.plot(mean_predicted_value, fraction_of_positives, "s-",label="%s (%1.3f)" % (name, clf_score))ax2.hist(prob_pos, range=(0, 1), bins=10, label=name,histtype="step", lw=2)ax1.set_ylabel("Fraction of positives")ax1.set_ylim([-0.05, 1.05])ax1.legend(loc="lower right")ax1.set_title("Calibration plots (reliability curve)")ax2.set_xlabel("Mean predicted value")ax2.set_ylabel("Count")ax2.legend(loc="upper center", ncol=2)plt.tight_layout()# 绘制高斯朴素贝叶斯的校准曲线plot_calibration_curve(GaussianNB(), "Naive Bayes", 1)# 绘制线性支持向量分类器(Linear SVC)的校准曲线plot_calibration_curve(LinearSVC(max_iter=10000), "SVC", 2)plt.show()

脚本的总运行时间:(0分钟2.474秒)

估计的内存使用量: 28 MB

下载Python源代码: plot_calibration_curve.py下载Jupyter notebook源代码: plot_calibration_curve.ipynb由Sphinx-Gallery生成的画廊

文壹由“伴编辑器”提供技术支持☆☆☆为方便大家查阅,小编已将scikit-learn学习路线专栏文章统一整理到公众号底部菜单栏,同步更新中,关注公众号,点击左下方“系列文章”,如图:

欢迎大家和我一起沿着scikit-learn文档这条路线,一起巩固机器学习算法基础。(添加微信:mthler,备注:sklearn学习,一起进【sklearn机器学习进步群】开启打怪升级的学习之旅。)

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。