رسم احتمالات الفئات المحسوبة بواسطة VotingClassifier#

رسم احتمالات الفئات للعينة الأولى في مجموعة بيانات تجريبية متوقعة بواسطة ثلاثة مصنفات مختلفة ومتوسط بواسطة VotingClassifier.

أولاً، تتم تهيئة ثلاثة مصنفات نموذجية (LogisticRegression و GaussianNB و RandomForestClassifier) وتستخدم لتهيئة VotingClassifier للتصويت الناعم مع أوزان [1، 5]، مما يعني أن احتمالات التنبؤ لـ RandomForestClassifier تحسب 5 مرات بقدر أوزان المصنفات الأخرى عند حساب الاحتمال المتوسط.

لتصور ترجيح الاحتمال، نقوم بملاءمة كل مصنف على مجموعة التدريب ورسم احتمالات الفئات المتوقعة للعينة الأولى في مجموعة البيانات النموذجية هذه.

احتمالات الفئات للعينة 1 بواسطة مصنفات مختلفة
# Authors: The scikit-learn developers
# SPDX-License-Identifier: BSD-3-Clause

import matplotlib.pyplot as plt
import numpy as np

from sklearn.ensemble import RandomForestClassifier, VotingClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.naive_bayes import GaussianNB

clf1 = LogisticRegression(max_iter=1000, random_state=123)
clf2 = RandomForestClassifier(n_estimators=100, random_state=123)
clf3 = GaussianNB()
X = np.array([[-1.0, -1.0], [-1.2, -1.4], [-3.4, -2.2], [1.1, 1.2]])
y = np.array([1, 1, 2, 2])

eclf = VotingClassifier(
    estimators=[("lr", clf1), ("rf", clf2), ("gnb", clf3)],
    voting="soft",
    weights=[1, 1, 5],
)

# تنبؤ باحتمالات الفئات لجميع المصنفات
probas = [c.fit(X, y).predict_proba(X) for c in (clf1, clf2, clf3, eclf)]

# الحصول على احتمالات الفئات للعينة الأولى في مجموعة البيانات
class1_1 = [pr[0, 0] for pr in probas]
class2_1 = [pr[0, 1] for pr in probas]


# الرسم

N = 4  # عدد المجموعات
ind = np.arange(N)  # مواضع المجموعات
width = 0.35  # عرض الشريط

fig, ax = plt.subplots()

# أشرطة للمصنف 1-3
p1 = ax.bar(ind, np.hstack(([class1_1[:-1], [0]])), width, color="green", edgecolor="k")
p2 = ax.bar(
    ind + width,
    np.hstack(([class2_1[:-1], [0]])),
    width,
    color="lightgreen",
    edgecolor="k",
)

# أشرطة لـ VotingClassifier
p3 = ax.bar(ind, [0, 0, 0, class1_1[-1]], width, color="blue", edgecolor="k")
p4 = ax.bar(
    ind + width, [0, 0, 0, class2_1[-1]], width, color="steelblue", edgecolor="k"
)

# تعليقات بيانية
plt.axvline(2.8, color="k", linestyle="dashed")
ax.set_xticks(ind + width)
ax.set_xticklabels(
    [
        "LogisticRegression\n الوزن 1",
        "GaussianNB\n الوزن 1",
        "RandomForestClassifier\n الوزن 5",
        "VotingClassifier\n (متوسط الاحتمالات)",
    ],
    rotation=40,
    ha="right",
)
plt.ylim([0, 1])
plt.title("احتمالات الفئات للعينة 1 بواسطة مصنفات مختلفة")
plt.legend([p1[0], p2[0]], ["الفئة 1", "الفئة 2"], loc="upper left")
plt.tight_layout()
plt.show()

Total running time of the script: (0 minutes 0.405 seconds)

Related examples

رسم حدود القرار لـ VotingClassifier

رسم حدود القرار لـ VotingClassifier

الترميز المتناثر مع قاموس محسوب مسبقًا

الترميز المتناثر مع قاموس محسوب مسبقًا

أبرز ميزات الإصدار 0.22 من scikit-learn

أبرز ميزات الإصدار 0.22 من scikit-learn

أخطاء OOB لخوارزمية Random Forests

أخطاء OOB لخوارزمية Random Forests

Gallery generated by Sphinx-Gallery