تعلم آلة Python: برنامج تعليمي سهل خطوة بخطوة للمبتدئين

في العالم الحديث ، أصبح التعلم الآلي جانبًا أساسيًا للنجاح في كل من الأعمال والبحث. لديها خوارزمية تقوم بأتمتة كل عملية تجارية. في هذه المقالة ، سوف نتعرف على التعلم الآلي وسنستكشف مختلف الخوارزميات والتطبيقات واستخدام لغة برمجة Python .
للمبتدئين ، لنبدأ أولاً بالخلفية النظرية لتعلم الآلة. التعلم الآلي ليس جديدًا في مجال الحوسبة. بدلاً من ذلك ، إنها واحدة من أسرع التقنيات التي تتطور بمرور الوقت. في عام 1943 ، تم تقديم الشبكات العصبية لأول مرة بواسطة عالم الرياضيات والتر بيتس وعالم الفسيولوجيا العصبية وارن ماكولوه . بعد ذلك ، في عام 1958 ، تم إنشاء Perceptron كأول شبكة عصبية اصطناعية. تم إنشاؤه بواسطة فرانك روزنبلات للتعرف على الأنماط والأشكال.
تقدم سريعًا ، لذا أخيرًا ، في القرن الحادي والعشرين بقيادة لاعبين كبار مثل Google و Amazon و Facebook وغيرها. هناك المزيد والمزيد من الخوارزميات والبحث والتطوير في هذا المجال. وبالتالي ، فإن هذا يشجع المزيد والمزيد من الابتكار والاختراع في مجال الحوسبة.
ما هو التعلم الآلي؟
يعد التعلم الآلي أحد الموضوعات الساخنة في الذكاء الاصطناعي حيث يوفر لأجهزة الكمبيوتر الكفاءة للتعلم دون أن تتم برمجتها بشكل صريح . كما أن لديها خوارزمية تتيح للتطبيقات الحصول على نتائج أكثر دقة. بالإضافة إلى ذلك ، في التنبؤ بالنتائج ، فإنه يوفر نتائج دقيقة دون أن تكون مبرمجة بشكل واضح . عادةً ما يبني التعلم الآلي خوارزميات تحتوي على بيانات إدخال ويستخدم التحليل الإحصائي. يتم استخدامه للتنبؤ بالنتيجة أثناء تحديث المخرجات كبيانات جديدة. ترتبط الأساليب المتضمنة في التعلم الآلي باستخراج البيانات والنمذجة التنبؤية. تتطلب العملية البحث في البيانات للعثور على الأنماط وتنظيم الإجراءات وفقًا لذلك.
أحد الأمثلة الرائعة هو عندما تستخدم حساباتك على وسائل التواصل الاجتماعي حيث تتعلم تجربة التصفح الخاصة بك. يمكنك ملاحظة ذلك من خلال الإعلانات التي تظهر على حسابك. تستخدم محركات التوصيات التعلم الآلي لتخصيص الإعلانات عبر الإنترنت في جوانب الوقت الفعلي. بصرف النظر عن توصية محرك البحث ، يستخدم التعلم الآلي أيضًا لتصفية البريد العشوائي وتهديد اكتشاف الشبكة والصيانة التنبؤية.
ما هي الخوارزميات في التعلم الآلي؟
عند الحديث عن الخوارزمية ، فإن التعلم الآلي لديه الكثير من الخوارزميات لاستكشافها.
تصنف هذه الخوارزميات في مجموعات:
- التعلم الخاضع للإشراف
- تعليم غير مشرف عليه
- التعلم شبه الخاضع للإشراف
- تعزيز التعلم
عندما تحدثنا عن التعلم الخاضع للإشراف ، فهذا يعني أن الكمبيوتر لديه القدرة على التعرف على البيانات بناءً على العينات المقدمة. يتعلم الكمبيوتر ويحسن القدرة على فهم البيانات الجديدة بناءً على البيانات الأصلية.
تشمل الخوارزميات تحت التعلم الخاضع للإشراف ما يلي:
- الانحدارالخطي
- آلة ناقلات الدعم (SVM)
- أشجار القرار
- المصنف Naïve Bayes
- K- أقرب الجار
يعمل التعلم غير الخاضع للإشراف بطريقة يتدرب بها برنامج الكمبيوتر على البيانات غير المسماة. الآلة هي التي تحدد العلاقة بين بيانات الإدخال والبيانات الأخرى ذات الصلة. يشير هذا إلى أن الكمبيوتر نفسه يبحث عن أنماط وعلاقات بين مجموعات البيانات. في هذا المجال من التعلم الآلي ، يعد هذا مفيدًا جدًا في اكتشاف الأنماط والنمذجة الوصفية. عندما لا يكون لدى الإنسان فكرة عما يبحث عنه في مجموعة البيانات. لا تحدد هذه الخوارزمية المخرجات الصحيحة ولكنها تستكشف البيانات. بعد ذلك ، يمكنه تصنيف الاستدلالات من مجموعات البيانات لوصف البيانات المخفية من البيانات غير المسماة.
تحت التعلم الخاضع للإشراف الخوارزميات التالية:
- K- يعني التجميع
- قواعد الرابطة
نظرًا للقيود المفروضة على كل من التعلم الخاضع للإشراف وغير الخاضع للإشراف ، فقد وجد التعلم شبه الخاضع للإشراف طريقه إلى هذه القيود. بمعنى آخر ، ينحدر التعلم شبه الخاضع للإشراف من التعلم الخاضع للإشراف وغير الخاضع للإشراف. في بعض الحالات ، قد تكون تكلفة وضع العلامات عالية لأنها تحتاج إلى مهارات الخبراء. لذلك ، يمكن استخدام التعلم شبه الخاضع للإشراف كبيانات غير مسماة للتدريب. عادةً ما يتضمن هذا النوع من التعلم الآلي كمية صغيرة من البيانات المصنفة ويحتوي على كمية كبيرة من البيانات غير المسماة.
الخوارزميات في ظل التعلم شبه الخاضع للإشراف هي كما يلي:
- افتراض الاستمرارية
- افتراض الكتلة
- الافتراض المتنوع
من ناحية أخرى ، يعد التعلم المعزز طريقة تسمح بالتفاعل مع بيئته. بمعنى آخر ، يتفاعل من خلال إنشاء الإجراءات ويكتشف الأخطاء. عادة ما يكون لهذا التعلم سمة من سمات البحث عن التجربة والخطأ وتأخيرات المكافآت. علاوة على ذلك ، يسمح هذا لأجهزة الكمبيوتر والتطبيقات البرمجية بتحديد السلوك تلقائيًا ضمن سياق معين لزيادة أدائه إلى الحد الأقصى. تتضمن بعض تطبيقات التعلم المعزز الأيدي الآلية والسيارات ذاتية القيادة والألعاب الأخرى المتعلقة بالكمبيوتر.
قائمة الخوارزمية تحت التعلم المعزز هي كما يلي:
- الفرق الزمني (TD)
- Q- التعلم
- شبكات الخصومة العميقة
كيف تبدأ التعلم الآلي في بايثون؟
Python هي واحدة من أفضل لغات البرمجة لاستخدامها في تطبيقات التعلم الآلي. قبل أن نبدأ بمناقشات أعمق حول Python ، تحتاج أولاً إلى تثبيت الأدوات التالية من أجل البدء. تأكد من تثبيت أحدث إصدار.
قائمة الأدوات التي تحتاجها:
- لغة برمجة بايثون
- كيراس
- شوغون
- سكيكيت ليرن
- ثيانو
- NLTK
- نومبي
- الباندا
- اناكوندا
في التفضيل الخاص بي ، قمت فقط بتثبيت الأناكوندا على جهازي وهو الإطار الأساسي والأكثر صلة ، وقد تم تضمين IDE بالفعل. إليك كيف يبدو الأمر عند فتح تثبيت الأناكوندا.
تمنحك Anaconda خيارات حول نوع IDE الذي ستستخدمه. في حالتي ، أحب استخدام Spyder IDE أكثر من الآخرين. إليك عينة من Spyder IDE وهي تشغل “عالم مرحبًا” بسيطًا في بايثون.
بناء جملة بايثون الأساسي
بعد تثبيت جميع الأدوات المطلوبة وإعدادها ، لنبدأ ببعض الأساسيات! في التعلم الآلي ، هناك سلسلة من الخطوات والعمليات التي يجب اتباعها. ستركز هذه المقالة فقط على الجانب الرياضي وتصور البيانات باستخدام بايثون. في المثال أدناه ، سأستخدم خوارزمية تعلم خاضعة للإشراف.
البيانات
في علم البيانات أو أي برنامج تعلم آلي ، تعد البيانات عنصرًا أساسيًا ومهمًا في هذا الموضوع. للمبتدئين الذين يرغبون في استكشاف عالم علوم البيانات ، يمكنك تنزيل البيانات من بنك بيانات مختلف أو مستودع بيانات. بناءً على تفضيلاتي الخاصة ، قمت بتنزيل بعض بياناتي من www.kaggle.com . هناك خيار آخر للحصول على البيانات وهو جمع البيانات اللازمة للتعلم شخصيًا. في المثال الخاص بي اليوم ، قمت بتنزيل بيانات من kaggle بخصوص الصحة العقلية. هذه البيانات هي معدلات الانتحار المبلغ عنها من عام 1985 إلى عام 2016.
مكتبات
يوجد في Python الكثير من المكتبات التي تقدمها للتعلم الآلي. في نموذج الكود الخاص بي ، أستخدم المكتبات التالية.
- Numpy هي إحدى الحزم الأساسية في Python المستخدمة في الحساب العلمي.
- Seaboarn هي مكتبة Python تُستخدم لتصور البيانات بناءً على matplotib. توفر هذه المكتبة واجهة عالية المستوى لمخططات رسومية وتحليلات إحصائية جيدة المظهر وجذابة.
- Panda هي مكتبة مفتوحة المصدر في Python توفر أداءً عالياً ، وهياكل بيانات سهلة الاستخدام وأدوات تحليل البيانات.
- Matplotlib هي مكتبة تخطيط ثنائية الأبعاد في بايثون.
باستخدام وظيفة هذه المكتبات ، يجب أن تكون المكالمة الأولى في التعليمات البرمجية الخاصة بك. هذه بداية جيدة لاستيراد هذه المكتبات
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import os
تحميل قواعد البيانات
في Python ، إذا كانت مجموعة البيانات الخاصة بك بتنسيق ملف CSV ، فإنها تقرأ باستخدام وظائف محددة مسبقًا. قراءة البيانات وعرضها من ملف CSV كالتالي:
curDir = os.getcwd()
data=pd.read_csv(curDir + '/master.csv')
print(data.head())
print(data.tail())
print(data.sample(5))
print(data.sample(frac=0.1))
هناك طريقة أخرى لعرض بياناتك أو عرض بياناتك وهي كما يلي:
print(data.iloc[:,1:5].describe())
print(data.info())
print(data.columns)
#renaming data.
data=data.rename(columns={'country':'Country','year':'Year','sex':'Gender','age':'Age','suicides_no':'SuicidesNo','population':'Population','suicides/100k pop':'Suicides 100k Population','country-year':'CountryYear','HDI for year':'HDIForYear',' gdp_for_year ($) ':'GdpForYearMoney','gdp_per_capita ($)':'Gdp_Per_Capita','generation':'Generation'})
print(data.columns)
print(data.isnull().any())
print(data.isnull().values.any())
print(data.isnull().sum())
خوارزمية الانحدار الخطي البسيط
في هذا المثال ، أستخدم انحدارًا خطيًا بسيطًا بين إجمالي الناتج المحلي لكل رأس مال وعدد السكان. بادئ ذي بدء ، كما ترى في الرسم البياني ، تم تضمين الجنس أيضًا في التحليل. يوجد أدناه الكود المطبق في Python.
sns.lmplot(x="Population", y="Gdp_Per_Capita", hue="Gender", data=data, palette="Set1")
plt.show()
عرض مرئي للمعلومات
هناك العديد من الطرق التي يمكنك من خلالها إظهار بياناتك ، ولكن بالنسبة لتفضيلاتي الخاصة ، سيكون من الأفضل التأكيد على عرض البيانات ذات الصلة في شكل رسم بياني. لدى Python طريقة جيدة لتمثيلها ، لذا إليك الطريقة!
أولاً ، يمثل الرسم البياني عدد سكان معدلات الانتحار في هذا العرض التقديمي ، ويستخدم رسمًا بيانيًا بسيطًا للمخطط المبعثر. إليك كيفية تنفيذ مخطط التشتت في بيثون.
plt.figure(figsize=(10,10))
sns.stripplot(x="Year",y='Suicides 100k Population',data=data, palette="Set1")
plt.xticks(rotation=45)
plt.show()

ثانيًا وأخيرًا ، يحتوي الرسم البياني الأخير على نفس القيم التي يجب تمثيلها ولكن للأغراض التعليمية ، فهو يمثل الرسم البياني الدائري والرسم البياني الشريطي. تحقق من كيفية اختلاف كود Python في هذه البيانات.
f,ax=plt.subplots(1,2,figsize=(18,8))
data['Generation'].value_counts().plot.pie(explode=[0.1,0.1,0.1,0.1,0.1,0.1],autopct='%1.1f%%',ax=ax[0],shadow=True)

f,ax=plt.subplots(1,2,figsize=(18,8))
ax[0].set_title('Generations Summary')
ax[0].set_ylabel('Count')
sns.countplot('Generation',data=data,ax=ax[1], palette="Set1")
ax[1].set_title('Generations Count')
plt.show()

إليك تنفيذ التعليمات البرمجية بالكامل في Python:
#!/usr/bin/env python3
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Mon Nov 4 13:42:48 2019
@author: juliet mendez
- Mental Health Evaluation
- Data from www.kaggle.com
"""
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import os
curDir = os.getcwd()
data=pd.read_csv(curDir + '/master.csv')
print(data.head())
print(data.tail())
print(data.sample(5))
print(data.sample(frac=0.1))
data=data.rename(columns={'country':'Country','year':'Year','sex':'Gender','age':'Age','suicides_no':'SuicidesNo','population':'Population','suicides/100k pop':'Suicides 100k Population','country-year':'CountryYear','HDI for year':'HDIForYear',' gdp_for_year ($) ':'GdpForYearMoney','gdp_per_capita ($)':'Gdp_Per_Capita','generation':'Generation'})
print(data.isnull().any())
print(data.isnull().values.any())
print(data.isnull().sum())
print("\n \n \n")
sns.lmplot(x="Population", y="Gdp_Per_Capita", hue="Gender", data=data, palette="Set1")
plt.show()
print("\n \n \n")
plt.figure(figsize=(10,10))
sns.stripplot(x="Year",y='Suicides 100k Population',data=data, palette="Set1")
plt.xticks(rotation=45)
plt.show()
print("\n \n \n")
data=data.drop(['HDIForYear','CountryYear'],axis=1)
min_year=min(data.Year)
max_year=max(data.Year)
print('Min Year :',min_year)
print('Max Year :',max_year)
data_country=data[(data['Year']==min_year)]
print("\n \n \n")
f,ax=plt.subplots(1,2,figsize=(18,8))
#pie chart
data['Generation'].value_counts().plot.pie(explode=[0.1,0.1,0.1,0.1,0.1,0.1],autopct='%1.1f%%',ax=ax[0],shadow=True)
#bar graph
ax[0].set_title('Generations Summary')
ax[0].set_ylabel('Count')
sns.countplot('Generation',data=data,ax=ax[1], palette="Set1")
ax[1].set_title('Generations Count')
plt.show()