اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر

خوارزمية تعتمد على التصويت بين عدة خوارزميات، بحيث تحدد لها عدة خوارزميات تصنيف وكل خوارزمية ستقوم بعمل fitting على البيانات ثم إجراء مايسمى  "Voting" لانتخاب النتيجة الأفضل اعتماداً على الخوارزميات المستخدمة.
 يمكنك تطبيقها في Sklearn عبر الموديول:

ensemble.VotingClassifier

الصيغة العامة:

sklearn.ensemble.VotingClassifier(estimators, voting='hard', weights=None, n_jobs=None, verbose=False)

الوسيط الأول نحدد فيه خوارزميات التصنيف التي نريد استخدامها وتقبل list من ال tuble بحيث كل tuble عبارة عن قيمة أولى str تمثل اسم اختياري للخوارزمية وقيمة ثانية تمثل الكلاس (الخوارزمية) "موضحة في المثال".
الوسيط الثاني voting: تحدد نوع التصويت hard أو soft. وافتراضياً hard.
الوسيط الثالث weights: تحديد ماهي الأوزان في التصويت لكل خوارزمية. ويأخذ مصفوفة من الأوزان (,n_classifier,) قد تكون القيم int أو float لامشكلة.
n_jobs: عدد المهام التي يتم تنفيذها على التوازي. نضع -1 لأقصى قدر ممكن(زيادة سرعة التنفيذ).
ال attributes:
estimators_ : معلومات عن الخوارزميات المستخدمة.
classes_: ال labels الموجودة.
التوابع:
fit(data)   للقيام بعملية التدريب.
predict(data)  للقيام بعملية توقع قيمة عينة.
score(data)     لإيجاد كفاءة النموذج.
مثال:سنستخدم 3 خوارزميات تصنيف GaussianNB+LR+RF

#استيراد المكتبات
import numpy as np
from sklearn.linear_model import LogisticRegression
from sklearn.naive_bayes import GaussianNB
from sklearn.ensemble import RandomForestClassifier, VotingClassifier
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
#تحميل البيانات
data = load_breast_cancer().data
labels = load_breast_cancer().target
# تقسيم البيانات
X_train, X_test, y_train, y_test = train_test_split(data, labels, test_size=0.2, random_state=2021, shuffle =True)
c1 = LogisticRegression(multi_class='multinomial', random_state=1)
c2 = RandomForestClassifier(n_estimators=50, random_state=1)
c3 = GaussianNB()

ec1 = VotingClassifier(estimators=[ ('lr', c1), ('rf', c2), ('gnb', c3)], voting='hard')
ec1 = ec1.fit(X_train, y_train)
print(ec1.score(X_test,y_test))#0.9385964912280702

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...