شرح نموذج DBSCAN في تعليم الاله وكيف يستخدم في لغة البايثون
نموذج DBSCAN من النماذج المهمه والتي تستخدم عندما نريد التفريق بين انواع مختلفة من البيانات او اذا حصلت مشاكل في تنظيم البيانات وقرر النظام اختيار بيانات خاطئة وهنا نلجأ الى نموذج DBSCAN والذي يسمى المنقذ حيث يساعدنا على التفريق بين البيانات وذلك يكون عن طريق اخذ مجموعة من البيانات القريبه من بعضها وجعلها بنفس النوع وسوف نتطرق لكم في مقالة اليوم بشرح تفصيلي لهذة العملية وكيف تتم بصورة مبسطه وواضحه لكم
تعليم الاله واحد كن المجال التي اصبح التركيز عليها كبير من قبل الشركات العملاقه وذلك بسبب ما تقدمه لنا من توفير في الوقت والحصول على نتائج دقيقه او بنسبة كبيره تكون accuracy ونحاول دائما توفير كل ما يحتاجه المطور في مختلف الاكواد بشكل free لكي يتمكن من انجاز عمله والحصول على افضل النتائج في العمل ، هذا المجال موجود منذ مده ولكن بدء حاليا في الانتشار بشكل واسع بسبب التطورات التي تتوفر في عصرنا والاستغناء عن بعض الاعمال البشريه .
يهتم مجال ال machine learning بتدريب models تقوم بعمل وظيفه معينه للبيانات المتوفره لدينا مثال على ذلك اذا كانت لدينا بيانات لمباريات كرة قدم ونريد عمل model لمعرفة هل هذة المباريات ستقام ام هنالك مشاكل تمنع اللاعبين من اللعب بالتالي نقوم بالحصول اولا على بيانات ال weather و الملعب و والحراره والبروده وكل البيانات التي نحتاجها ونمررها الى model ونقوم بعمل train له للتاكد من مدى خطوره لعب المباراه
التعامل مع datasets الخاصة بي iris وتحليل البيانات
في المقالة السابقة قمنا بعرض البيانات وكانت بشكل منظم حيث ان عدد ال1 كانو بجانب بعض وال0 وال2 ولا يوجد اي مشاكل فيهم اثناء عرضهم ولكن بعد استخدام KMeans سنلاحظ ان هناك مشكلة في البيانات وان القيمة صفر يوجد بها مشكلة في التنظيم وهناك تداخل من القيمة 0 و 2 ولكن ليس كبير ولكن عند النباتات 1 و 2 يوجد لخبطه كبيره بينهم ولم يستطيع النظام تنظيمهم بشكل جيد وهذة هي الوظيفة التي نحتاج فيها الى استعمال DBSCAN وهي عندما لا يستطيع النظام معرفة البيانات بشكل جيد
from sklearn.datasets import load_iris
iris = load_iris()
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
scaled_data = scaler.fit_transform(iris['data'])
from sklearn.cluster import KMeans
model = KMeans(n_clusters=3 , random_state=42) # n_clusters = type of flower
model.fit(scaled_data)
model.labels_
iris['target']
كيف يتم تدريب النموذج في تعليم الالة للتفريق بين الصواب والخطأ
ببساطة سيقوم النموذج بمعرفة الصوب بناء على المدخلات الخاصه بك والمخرجات التي ظهرت من KMeans ويعمل على التعديل عليها وايجاد افضل قيمة البيانات الاولى كانت بشكل تنظمي عباره عن مجموعة الاصفار بجانب بعضهم وال1 و ال2 جميعهم بشكل منظم وبالمقابل الجهه الاخرى يشاهد هل استطاع النظام حلها بشكل جيد ام لا فإذا كان هناك خطأ فيعرف انه يوجد مشكلة مثلا في الصف الخامس على سبيل المثال هناك خطأ لذلك سيعمل النموذج على حلها بإذن الله
الية عمل المشروع عبارة عن اخذ العنصر الذي نريده وايحاطته بحيز واي دائرة داخل هذا الحيز نعتبرها من النوع الموجود في الحيز ووظيفتنا هي التحكم بالحيز عن طريق توسيع النطاق او تقليله مع العلم ان كثرة تكبير الحيز تسبب مشاكل وربنا يعتبر دوائر اخرى بنفس هذا الدائرة على سبيل المثال واذا قل الحيز سيضطر المعالج على العمل بطاقة اكبر فلذلك حاول ضبطه على قدر الامكان كي لا يحدث مشاكل معك
تمييز البيانات لمعرفة الصواب والخطأ في تعليم الالة
في هذة الصوره قمنا بعرض الصور على بالصورة العادية ونلاحظ انه يوجد اخطاء كثيرة في النموذج من حيث انه اعتبر الالوان ابيض على كل الدوائر الزرقاء وهذا خطأ وهذا ما ذكرناه لكم بالاعلى اذا حدثت هذة المشكلة نرجع الى نموذج DBSCAN والذي يساعدنا على الخروج من هذا المأزق لذلك سوف نستخدمه في الكود التالي
import matplotlib.pyplot as plt
plt.figure(figsize=(12,12))
color = ['red','green','blue']
target_color = [color[val] for val in iris['target']]
color2 = ['black','white','red']
target_color2 = [color2[val] for val in iris['target']]
plt.scatter(scaled_data[:,0] , scaled_data[:,1] , c=target_color, s=140)
plt.scatter(scaled_data[:,0] , scaled_data[:,1] , c=target_color2, s=70 , marker='*')
عرض نتائج ال model بعد القيام بعملية DBSCAN
في هذا الكود استخدمنا نموذج DBSCAN وكانت النسبة التي تم استخدامها 0.7 واعتقد انها مناسبة نوعا ما للبيانات وقمنا بعمل تغيير لبعض اشكال البيانات ولو نلاحظ ان نسبة الخطأ قلت واصبحت نسبة الصواب اعلى وهذا ما يفيدكم في هذا النموذج تقليل نسبة الخطأ قدر الامكان والوصول الى افضل نتيجة ممكنه
from sklearn.cluster import DBSCAN
model = DBSCAN(eps=0.7)
model.fit(scaled_data)
list(model.labels_).count(-1)
import matplotlib.pyplot as plt
plt.figure(figsize=(10,10))
color = ['red','blue','black']
target_color = [color[val] for val in iris['target']]
color2 = ['white','green','orange']
target_color2 = [color2[val] for val in model.labels_]
plt.scatter(scaled_data[:,0] , scaled_data[:,1] , c=target_color, s=140)
plt.scatter(scaled_data[:,0] , scaled_data[:,1] , c=target_color2, s=70 , marker='*')