إستخدام خوارزمية الغابة العشوائية Random Forest في حل مسائل التصنيف مع مثال في Python

بالنسبة لإستخدام خوارزمية الغابة العشوائية لحل مسائل التصنيف ، سوف نستخدم بيانات إعلانات الشبكات الاجتماعية التي تحتوي على معلومات حول المنتج الذي تم شراؤه بناءً على عمر الشخص وراتبه.

أولا في البداية دعونا نستورد المكتبات الضرورية لتشغيل هذا النموذج

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

ثانيا نقوم بتحميل ملف البيانات الذي نزلناه من الموقع هنا و نقوم بإستعراض البيانات

df = pd.read_csv('Social_Network_Ads.csv')
df

ثالثا من أجل تسهيل العمل نقوم بإزالة بعض الأعمدة غير الضرورية و نحدد أعمدة الميزات و عمود الهدف 

X = df.iloc[:, [2, 3]].values
y = df.iloc[:, 4].values
print (X)

رابعا نقوم بتقسيم البيانات إلى بيانات تدريب لتدريب النموذج و بيانات إختبار لإختبار نتائج النموذج الذي أنشأناه

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.25, random_state = 0)

خامسا من مكتبة sklearn نقوم بإستدعاء الدالة StandardScaler من أجل توحيد البيانات Data  standardization

from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)

سادسا نقوم بملائمة النموذج بعد إستدعائة على البيانات التي حملناها

from sklearn.ensemble import RandomForestClassifier
model = RandomForestClassifier(n_estimators = 10, criterion = 'entropy', random_state = 0)
model.fit(X_train, y_train)

بالنسبة لإعدادات النموذج لقد وضعنا 10 أشجار واستخدمنا المعيار “إنتروبيا entropy” حيث يتم استخدام هذه المعيار لتقليل القيم الشاذة في البيانات. يمكنك زيادة عدد الأشجار إذا كنت ترغب في ذلك ولكننا سنبقيها مقيدة بـ 10 في الوقت الحالي. الآن بعد إنتهائنا من إنشاء النموذج سوف نتوقع البيانات بإستخدام بيانات الاختبار.

y_prediction = model.predict(X_test)

سابعا بعد التنبؤ ، يمكننا إختبار النموذج من خلال مصفوفة الارتباك Confusion matrix ومعرفة مدى جودة أداء نموذجنا.

from sklearn.metrics import confusion_matrix
conf_mat = confusion_matrix(y_test, y_prediction)
print(conf_mat)
              

عظيم. كما نرى ، فإن نموذجنا يعمل بشكل جيد لأن معدل سوء التصنيف قليل وهو أمر مثير للاهتمام. الآن دعونا نرسم نتيجة تدريب نموذجنا.

from matplotlib.colors import ListedColormap
X_set, y_set = X_train, y_train
X1, X2 = np.meshgrid(np.arange(start = X_set[:, 0].min() - 1, stop = X_set[:, 0].max() + 1, step = 0.01),np.arange(start = X_set[:, 1].min() - 1, stop = X_set[:, 1].max() + 1, step = 0.01))
plt.contourf(X1,X2,model.predict(np.array([X1.ravel(), X2.ravel()]).T).reshape(X1.shape),alpha = 0.75, cmap = ListedColormap(('red', 'green')))
plt.xlim(X1.min(), X1.max())
plt.ylim(X2.min(), X2.max())
for i, j in enumerate(np.unique(y_set)):
    plt.scatter(X_set[y_set == j, 0], X_set[y_set == j, 1],
                c = ListedColormap(('red', 'green'))(i), label = j)
plt.title('Random Forest Classification (Training set)')
plt.xlabel('Age')
plt.ylabel('Salary')
plt.legend()
plt.show()

و هنا نتيجة إختبار النموذج

from matplotlib.colors import ListedColormap
X_set, y_set = X_test, y_test
X1, X2 = np.meshgrid(np.arange(start = X_set[:, 0].min() - 1, stop = X_set[:, 0].max() + 1, step = 0.01),np.arange(start = X_set[:, 1].min() - 1, stop = X_set[:, 1].max() + 1, step = 0.01))
plt.contourf(X1,X2,model.predict(np.array([X1.ravel(), X2.ravel()]).T).reshape(X1.shape),alpha=0.75,cmap= ListedColormap(('red', 'green')))
plt.xlim(X1.min(), X1.max())
plt.ylim(X2.min(), X2.max())
for i, j in enumerate(np.unique(y_set)):
    plt.scatter(X_set[y_set == j, 0], X_set[y_set == j, 1],
                c = ListedColormap(('red', 'green'))(i), label = j)
plt.title('Random Forest Classification (Test set)')
plt.xlabel('Age')
plt.ylabel('Estimated Salary')
plt.legend()
plt.show()

 

 

 

 

 

 

 

Share on facebook
فاسبوك
Share on twitter
تويتر
Share on linkedin
لينكد إن
Share on whatsapp
واتساب

اترك تعليقاً

المشاركات الاخيرة

أحدث التعليقات

أفحص بحثك بالمجان

رفع الملف