دور SQL الاستعلامية في التعلم الآلي

دور SQL الاستعلامية في التعلم الآلي

دور SQL الاستعلامية في التعلم الآلي

 

ما هو دور SQL الاستعلامية في التعلم الآلي؟

في هذا المقال ، سنجيب عن هذا السؤال.

سنرى أين وكيف تكون SQL مفيدة في جمع البيانات وتنقيتها والتحقق من صحتها ، ثم كيف تساعد نماذجك على استخدام البيانات للتدريب.

هيا بنا نبدأ ونتعرف علي دور SQL الاستعلامية في التعلم الآلي.

 

SQL في تعلم الآلة

أولاً ، دعونا نلقي نظرة على العلاقة بين SQL و ML.

لماذا تحتاج إلى SQL للتعلم الآلي؟

هل تحتاج إلى تعلم لغة SQL لتكون فعالة؟

لماذا استخدام SQL في التعلم الآلي؟

لا يحدث التعلم الآلي بدون البيانات.

أنت بحاجة إليه لتدريب الخوارزميات الخاصة بك ، وكلما زادت البيانات ، كان ذلك أفضل.

لذلك ، فأنت بحاجة إلى مكان لتخزين كميات كبيرة من المعلومات ، وطريقة لإدخالها في الخوارزميات الخاصة بك حتى يتمكنوا من تحليلها والتعلم منها.

وهنا يأتي دور SQL.

لسنا بحاجة إلى تحديد ماهية SQL أو مراجعة قدراتها ، ولكن الأمر يستحق النظر في مصدرها وكيفية استخدامها.

SQL هي طريقة الاستعلام عن البيانات.

 

لقد كان موجودًا منذ أوائل السبعينيات وقد صمد أمام العديد من المحاولات لاستبداله بشيء أفضل.

قام البائعون بتوسيع وتحسين وتعديل SQL على مر السنين ، ولا تزال واحدة من أكثر اللغات شيوعًا لمعالجة مجموعات البيانات الكبيرة وتصفيتها.

تم إنشاء SQL لخوادم قواعد البيانات ، وهذا هو المكان الذي لا يزال بإمكانك العثور عليه فيه .. ولكن ، انتشرت SQL إلى أبعد من خوادم بيانات SQL.

 

يمكنك استخدامه للاستعلام عن جداول بيانات Google.

ستجد أيضًا قواعد نحوية شبيهة بلغة SQL في ما يسمى بقواعد بيانات NoSQL مثل Couchbase ومتاجر السلاسل الزمنية مثل InfluxDB.

هناك أسباب وجيهة وراء انتشار SQL. نشرت لجنة شكلها المعهد الوطني الأمريكي للمعايير (ANSI) معيارًا في عام 1986.

تمت مراجعته وتنقيحه عدة مرات منذ ذلك الحين ، ولكن هذا المعيار أتاح للعديد من اللغات والأنظمة الأساسية اعتماد واجهات لمخازن بيانات SQL.

لذلك ، فإن الصلة بين ML و SQL هي البيانات. يتطلب تطوير ML كميات كبيرة من البيانات ، وتبسط SQL تنظيم واسترجاع وتصفية تلك البيانات.

 

هل تعلم SQL ضروري؟

من الآمن القول أنك إذا كان جزء من وظيفتك هو الوصول إلى البيانات ، فستحتاج في النهاية إلى تعلم SQL.

إنها أداة قيمة لهيكلة البيانات ونماذج التدريب. يعد الحصول على البيانات إحدى الخطوات الأولى في أي مشروع للتعلم الآلي.

اعتمادًا على المشروع ، قد يعني هذا إنشاء مجموعة بيانات جديدة ، أو العثور على مجموعة موجودة.

يستخدم العديد من البائعين النماذج العلائقية لمجموعات البيانات الخاصة بهم.

لذلك ، فإن أسهل طريقة للاستعلام عن هذه البيانات هي باستخدام SQL.

قد تحتاج حتى إلى كتابة بعض نصوص SQL لإعادة هيكلة البيانات لنموذجك.

إذا كنت بحاجة إلى تجميع مجموعة بيانات جديدة ، فستحتاج إلى هيكلتها أيضًا.

 

كما ناقشنا أعلاه ، حتى إذا كنت لا تستخدم قاعدة بيانات SQL ، فهناك فرصة جيدة لاستخدام لغة استعلام مثل “SQL like”.

في وقت لاحق ، عندما تكون مستعدًا لاختبار النموذج وتدريبه ، تحتاج إلى الوصول إلى تلك البيانات.

تحتاج إلى إدخاله في نموذجك. سيتطلب هذا شيئًا يمكنه الاستعلام عن بيانات كود ML الخاص بك وتصفيتها وتشكيلها.

يمكنك كتابة التعليمات البرمجية الخاصة بك للقيام بذلك ، أو يمكنك استخدام الأدوات الموجودة بالفعل والتركيز على النموذج الخاص بك بدلاً من ذلك.

يتوفر SQL من معظم لغات البرمجة ، بما في ذلك Python و R ، ويتفوق في تصفية البيانات وتنسيقها للاستهلاك.

 

ومع ذلك ، فإن SQL ليست الخيار الوحيد للاستعلام عن البيانات ومعالجتها.

بعض قواعد بيانات noSQL ، مثل MongoDB و Redis ، لها لغات الاستعلام الخاصة بها. قد تكون هذه اللغات مناسبة بشكل أفضل ، أو ببساطة جيدة بما يكفي لمشروعك.

أو ، قد ترغب في الوصول إلى قاعدة بيانات علائقية عن طريق تجنب كتابة SQL واستخدام طبقة كائن وسيطة مثل Django التي تقوم بالعمل نيابة عنك.

 

دور SQL في التعلم الآلي

بعد ذلك ، دعنا نلقي نظرة على المراحل النموذجية لخط أنابيب التعلم الآلي ونرى أين تناسب SQL.

جمع البيانات وتنظيفها

لقد أمضينا بالفعل الكثير من الوقت في الحديث عن كيفية ملاءمة SQL في اكتساب البيانات.

توجد العديد من مجموعات البيانات بالفعل في قواعد بيانات SQL ، أو تنسيقات SQL سهلة الاستخدام مثل ملفات SQLite.

على سبيل المثال ، يحتوي موقع Kaggle الشهير على ما يقرب من 85000 مجموعة بيانات بتنسيق CSV و 200 مجموعة أخرى بتنسيق SQLite أو BigQuery.

بمجرد تحميل مجموعة بيانات إلى SQL ، يصبح تنظيفها أمرًا سهلاً.

على سبيل المثال ، دعنا نفكر في مجموعة بيانات Iris الشائعة في مستودع UCI.

تبدو السجلات كما يلي:

sepal_length ، و sepal_width ، و petal_length ، و petal + width ، و class

5.2,3.5,1.5,0.2,Iris-setosa

5.2,3.4,1.4,0.2,Iris-setosa

4.7,3.2,1.6,0.2,Iris-setosa

4.8,3.1,1.6,0.2,Iris-setosa

5.4,3.4,1.5,0.4,Iris-setosa

5.2,4.1,1.5,0.1,Iris-setosa

5.5,4.2,1.4,0.2,Iris-setosa

4.9,3.1,1.5,0.1,Iris-setosa

5.0,3.2,1.2,0.2,Iris-setosa

5.5,3.5,1.3,0.2,Iris-setosa

4.9,3.1,1.5,0.1,Iris-setosa

4.4,3.0,1.3,0.2,Iris-setosa

5.1,3.4,1.5,0.2,Iris-setosa

5.0,3.5,1.3,0.3,Iris-setosa

4.5,2.3,1.3,0.3,Iris-setosa

4.4,3.2,1.3,0.2,Iris-setosa

5.0,2.0,3.5,1.0,Iris-versicolor

5.9,3.0,4.2,1.5,Iris-versicolor

6.0,2.2,4.0,1.0,Iris-versicolor

 

يتم تعيينهم في جدول SQL واحد.

إذا أردنا إزالة نقاط البيانات التي تحتوي على petal_widths من 0.2 فئة ، فنحن ببساطة بحاجة إلى سطر واحد من كود SQL:

حذف من القزحية حيث petal_width = 0.2

تقوم قاعدة بيانات SQL بعمل زيارة كل سجل وحذف السجلات المناسبة لنا.

 

تأكيد صحة البيانات

يعد SQL مفيدًا للتحقق من صحة البيانات أيضًا. في الخطوة السابقة ، رأينا كيف يمكن للاستعلام العثور على البيانات غير المرغوب فيها وإزالتها.

كذلك يمكن لاستعلام مشابه أيضًا العثور على السجلات التي تطابق متطلبات النموذج الخاص بك.

أيضا يمكنك أيضًا استخدام القيود والسماح لقاعدة البيانات بالتحقق من صحة بياناتك.

على سبيل المثال ، وجدنا مصدرًا إضافيًا لبيانات قزحية العين ولكننا لاحظنا أنها تفتقر أحيانًا إلى قيم عرض البتلة التي قد تؤدي إلى كسر نموذجنا.

يمكننا إنشاء جدول SQL لا يقبل هذه القيم:

[dm_code_snippet background=”yes” background-mobile=”yes” slim=”no” bg-color=”#abb8c3″ theme=”dark” language=”sql” wrapped=”no” height=”” copy-text=”Copy Code” copy-confirmed=”Copied”]

 

create table iris_dg_tmp

(

“index” INTEGER,

sepal_length REAL,

sepal_width REAL,

petal_length REAL,

petal_width REAL not null,

class TEXT

);
[/dm_code_snippet]

 

يعني القيد غير الفارغ أنه يمكننا تحميل ملفات بيانات جديدة والسماح لقاعدة البيانات بالتحقق من الصحة لنا.

 

التدريب والتحقق من صحة النموذج وتحسينه

بعد جمع بياناتك وتنظيفها والتحقق من صحتها ، حان وقت تشغيل النموذج.

لقد ناقشنا بالفعل كيف أن SQL جزء لا يتجزأ من كود النموذج أعلاه: لديك العديد من الخيارات للوصول إلى بيانات SQL مباشرة في كود النموذج الخاص بك.

سنلقي نظرة على مدى سهولة ذلك بعد ذلك.

 

ما هي قاعدة البيانات المستخدمة في التعلم الآلي؟

هذا سؤال شائع ومن الصعب الإجابة عليه.

ليس بسبب عدم وجود أي قواعد بيانات مستخدمة في ML ، ولكن لأنه يمكنك استخدام أي قاعدة بيانات SQL تقريبًا للتعلم الآلي.

 

الوصول إلى SQL مع Pandas

كما ناقشنا أعلاه ، فإن الدور الأساسي لـ SQL في التعلم الآلي هو مساعدتك في الوصول إلى بياناتك.

لذلك تم دمج أحدهما في Pandas ، أداة تحليل ومعالجة بيانات Python.

كذلك تمتلك Pandas مكتبة الإدخال / الإخراج الخاصة بها ، والقناة الوحيدة التي تدعمها هي SQL.

 

دعنا نحمّل مجموعة بيانات Iris في SQLite باستخدام Pandas ، ثم نستفسر عنها بالطريقة نفسها.

أولاً ، بعد تنزيل مجموعة البيانات ، ستحتاج إلى إضافة عناوين الأعمدة إلى السطر الأول من ملف iris.data كما هو موضح أعلاه.

بعد ذلك ، يمكنك تشغيل هذا البرنامج النصي:

[dm_code_snippet background=”yes” background-mobile=”yes” slim=”no” bg-color=”#abb8c3″ theme=”dark” language=”sql” wrapped=”no” height=”” copy-text=”Copy Code” copy-confirmed=”Copied”]

 

import pandas as pd

from sqlite3 import connect

 

“:if __name__ == “__main__

conn = connect(“iris.db”)

data = pd.read_csv(“iris.data”)

data.to_sql(“iris”,conn)

df = pd.read_sql(“select petal_width FROM iris where petal_width = 0.2”, conn)

print(df)
[/dm_code_snippet]

Here is the output:

 

0           0.2

1           0.2

2           0.2

3           0.2

4           0.2

5           0.2

6           0.2

7           0.2

8           0.2

9           0.2

(trimmed for length)

 

في أربعة أسطر من التعليمات البرمجية ، نقوم بما يلي:

  1. متصل بـ SQLite. طلبنا القزحية ، ديسيبل ، التي لم تكن موجودة. لذلك ، قام سكليتي بإنشائه.
  2. اقرأ محتويات مجموعة بيانات Iris في Pandas DataFrame.
  3. تم إدراج DataFrame في SQLite. لدينا الآن جدول SQL بمحتويات مجموعة البيانات!
  4. تم الاستعلام عن نقاط البيانات ذات عرض البتلة 0.2

إذا حاولت تشغيل هذا مرة أخرى ، فسوف يفشل لأن SQLIte لن يعيد إنشاء قاعدة بيانات موجودة.

ولكن إذا علقت على الأسطر رقم 2 و 3 ، فيمكنك اللعب باستعلامات مختلفة.

إذا كان نموذجنا يريد عرض بتلات أكبر من 0.2 ولا نريد إسقاطها من قاعدة البيانات ، فيمكننا ببساطة ضبط الاستعلام:

[dm_code_snippet background=”yes” background-mobile=”yes” slim=”no” bg-color=”#abb8c3″ theme=”dark” language=”sql” wrapped=”no” height=”” copy-text=”Copy Code” copy-confirmed=”Copied”]

 

conn = connect(“iris.db”)

# data = pd.read_csv(“iris.data”)

# data.to_sql(“iris”,conn)

df = pd.read_sql(“select * FROM iris where petal_width > 0.2”, conn)

print(df)
[/dm_code_snippet]

 

يستخدم هذا المثال SQLite ، ولكنه سيعمل مع أي قاعدة بيانات SQL مع دعم SQLAlchemy.

لذلك ، يمكنك أن ترى أن الوصول إلى بيانات SQL في النماذج الخاصة بك بسيط جدًا وقوي جدًا أيضًا.

 

استخدام و دور SQL الاستعلامية في التعلم الآلي

لقد نظرنا في كيفية تناسب SQL مع التعلم الآلي. لقد رأينا كيف يكون مفيدًا في كل مرحلة من مراحل خط أنابيب التعلم الآلي.

أيضا العديد من مجموعات البيانات عبارة عن علاقات ، ويسهل SQL تحميل مجموعات بيانات العلاقة وتنظيفها والتحقق من صحتها واستردادها.

لذلك ، سواء كنت تقف في مسار تعلم جديد أو تعمل على ETL لنظام موجود ، فإن SQL هي أداة مفيدة وجزء أساسي من التعلم الآلي.

لذلك ، ابدأ باستخدام بيانات SQL في نماذج ML الخاصة بك اليوم!

 

لتنفيذ مشاريعك العملية ومشاريع تخرجك سارع  واطلب الخدمة الاحترافية واحجز مكانك في عالم المطورين المحترفين من خلال مدونة twiintech

اترك رد

لن يتم نشر عنوان بريدك الإلكتروني.