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

السؤال

Recommended Posts

  • 2
نشر (معدل)

Stochastic Gradient Descent (SGD) Classifier
تقوم بعمل  Logistic Regression لكن باستخدام خوارزمية التحسين ال Stochastic Gradient Descent.
يمكنك استخدامها عبر الموديول: linear_model.SGDClassifier

sklearn.linear_model.SGDClassifier(loss='hinge', *, penalty='l2', alpha=0.0001, fit_intercept=True, max_iter=1000, tol=0.001, shuffle=True, verbose=0, epsilon=0.1, n_jobs=None, random_state=None, learning_rate='optimal', early_stopping=False)

الوسطاء:
loss: هي دالة التكلفة المستخدمة، وكون المهمة هي مهمة تصنيف نستخدم الدالة  الافتراضية دوماً. أي hinge.
penalty: وهو نوع التنعيم المستخدم.
learning_rate: وهو معامل التعلم (مقدار الخطوة).
max_iter: العدد الأقصى للمحاولات.
early_stopping: في حال ضبطه على True سيتم تطبيق خاصية التوقف المبكر (لمنع ال Overfitting عندما تنهار الدقة على عينة التطوير مقابل عينة الاختبار).
shuffle: لخلط البيانات.
verbose: ضبطه على أي قيمة غير الصفر سيعطيك التفاصيل أثناء التدريب.
random_state: تتحكم بنظام العشوائية.

ال attributes:
coef_: الأوزان.

intercept_: التقاطع مع المحور y، ضبطه على False يجبر الكلاسيفير على المرور من المبدأ 0،0 لذا يفضل ضبطه على True لإعطاء الحرية للكلاسيفير.
n_iter_: عدد المحاولات التي تم تنفيضها خلال التدريب حتى الوصول لمرحلة التقارب من القيم الدنيا.
الدوال:
fit(X, y): لبدء التدريب على بياناتك.
predict(X): لتوقع قيم الدخل اعتماداً على قيم الأوزان.
score(X, y): لتقدير مدى كفاءة النموذج.

مثال على مجموعة بيانات Iris Data :

from sklearn.model_selection import train_test_split
from sklearn.linear_model import SGDClassifier
from sklearn.metrics import confusion_matrix
from sklearn.datasets import load_breast_cancer
import seaborn as sns
import matplotlib.pyplot as plt

# تحميل البيانات
Data = load_breast_cancer()
X = Data.data
y = Data.target

# تقسيم البيانات إلى عينات تدريب واختبار
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=44, shuffle =True)

# SGDClassifier تطبيق 
SGDC = SGDClassifier(penalty='l1',loss='hinge',learning_rate='optimal',random_state=44)
SGDC.fit(X_train, y_train)


print('SGDC Train Score is : ' , SGDC.score(X_train, y_train))
print('SGDC Test Score is : ' , SGDC.score(X_test, y_test))   # SGDC Test Score is :  0.9414893617021277
print('SGDC loss function is : ' , SGDC.loss_function_)
print('SGDC No. of iteratios is : ' , SGDC.n_iter_)

# عرض مصفوفة التشتت 
c = confusion_matrix(y_test, SGDC.predict(X_test))
print('Confusion Matrix is : \n', c)
#لرسم المصفوفة  
sns.heatmap(c, center = True)
plt.show()

 

تم التعديل في بواسطة Ali Haidar Ahmad

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...