دروس بايثون

بايثون هوم مقدمة بايثون ابدأ بايثون بناء جملة بايثون تعليقات بايثون متغيرات بايثون أنواع بيانات بايثون أرقام بايثون صب بايثون سلاسل بايثون بايثون منطقية مشغلي بايثون قوائم بايثون Python Tuples مجموعات بايثون قواميس بايثون بيثون إذا ... آخر بايثون أثناء التكرار بايثون للحلقات وظائف بايثون بيثون لامدا صفائف بايثون فئات / كائنات بايثون وراثة بايثون تكرارات بايثون نطاق بايثون وحدات بايثون تواريخ بايثون الرياضيات بايثون Python JSON لغة Python RegEx Python PIP بايثون جرب ... ماعدا مدخلات مستخدم بايثون تنسيق سلسلة Python

التعامل مع الملف

التعامل مع ملف بايثون ملفات قراءة بايثون Python كتابة / إنشاء ملفات بايثون حذف الملفات

وحدات بايثون

برنامج NumPy التعليمي تجول الباندا البرنامج التعليمي Scipy

بيثون ماتبلوتليب

مقدمة ماتبلوتليب ابدأ Matplotlib Matplotlib Pyplot ماتبلوتليب بالتآمر علامات Matplotlib خط ماتبلوتليب تسميات Matplotlib شبكة Matplotlib المؤامرات الفرعية Matplotlib مبعثر Matplotlib قضبان ماتبلوتليب الرسوم البيانية Matplotlib المخططات الدائرية Matplotlib

التعلم الالي

ابدء يعني وضع متوسط الانحراف المعياري النسبة المئوية توزيع البيانات توزيع البيانات العادي مؤامرة مبعثر الانحدارالخطي الانحدار متعدد الحدود الانحدار المتعدد حجم تدريب / اختبار شجرة القرار

Python MySQL

ابدأ MySQL MySQL إنشاء قاعدة بيانات إنشاء جدول MySQL إدراج MySQL حدد MySQL MySQL أين ترتيب MySQL حسب حذف MySQL جدول إسقاط MySQL تحديث MySQL حد MySQL انضم إلى MySQL

Python MongoDB

ابدأ MongoDB MongoDB إنشاء قاعدة بيانات MongoDB إنشاء مجموعة إدراج MongoDB البحث عن MongoDB استعلام MongoDB نوع MongoDB MongoDB يحذف مجموعة MongoDB Drop تحديث MongoDB حد MongoDB

مرجع بايثون

نظرة عامة على بايثون وظائف بايثون المضمنة طرق سلسلة بايثون طرق قائمة بايثون طرق قاموس بايثون طرق Python Tuple طرق تعيين بايثون طرق ملف بايثون كلمات بايثون استثناءات بايثون مسرد بايثون

مرجع الوحدة

وحدة عشوائية وحدة الطلبات وحدة الإحصاء وحدة الرياضيات وحدة cMath

كيف بايثون

إزالة قائمة التكرارات عكس سلسلة أضف عددين

أمثلة بايثون

أمثلة بايثون مترجم بايثون تمارين بايثون مسابقة بايثون شهادة بايثون

تعلم الآلة - تدريب / اختبار


تقييم النموذج الخاص بك

في التعلم الآلي ، نقوم بإنشاء نماذج للتنبؤ بنتائج أحداث معينة ، كما في الفصل السابق حيث توقعنا انبعاث ثاني أكسيد الكربون من السيارة عندما عرفنا الوزن وحجم المحرك.

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


ما هو التدريب / الاختبار

يعد التدريب / الاختبار طريقة لقياس دقة نموذجك.

يطلق عليه تدريب / اختبار لأنك قسمت مجموعة البيانات إلى مجموعتين: مجموعة تدريب ومجموعة اختبار.

80٪ للتدريب و 20٪ للاختبار.

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

تختبر النموذج باستخدام مجموعة الاختبار .

تدريب النموذج يعني إنشاء النموذج.

اختبار النموذج يعني اختبار دقة النموذج.


ابدأ بمجموعة بيانات

ابدأ بمجموعة بيانات تريد اختبارها.

توضح مجموعة البيانات الخاصة بنا 100 عميل في المتجر وعادات التسوق لديهم.

مثال

import numpy
import matplotlib.pyplot as plt
numpy.random.seed(2)

x = numpy.random.normal(3, 1, 100)
y = numpy.random.normal(150, 40, 100) / x

plt.scatter(x, y)
plt.show()

نتيجة:

يمثل المحور س عدد الدقائق قبل الشراء.

يمثل المحور ص مقدار الأموال التي يتم إنفاقها على الشراء.



انقسام في قطار / اختبار

يجب أن تكون مجموعة التدريب عبارة عن اختيار عشوائي بنسبة 80٪ من البيانات الأصلية.

يجب أن تكون مجموعة الاختبار 20٪ المتبقية.

train_x = x[:80]
train_y = y[:80]

test_x = x[80:]
test_y = y[80:]


اعرض مجموعة التدريب

اعرض نفس مخطط التبعثر باستخدام مجموعة التدريب:

مثال

plt.scatter(train_x, train_y)
plt.show()

نتيجة:

يبدو أنه مجموعة البيانات الأصلية ، لذلك يبدو أنه اختيار عادل:


اعرض مجموعة الاختبار

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

مثال

plt.scatter(test_x, test_y)
plt.show()

نتيجة:

تبدو مجموعة الاختبار أيضًا مثل مجموعة البيانات الأصلية:


تناسب مجموعة البيانات

كيف تبدو مجموعة البيانات؟ في رأيي ، أعتقد أن أفضل توافق هو الانحدار متعدد الحدود ، لذلك دعونا نرسم خط انحدار متعدد الحدود.

لرسم خط عبر نقاط البيانات ، نستخدم plot()طريقة وحدة matplotlib:

مثال

ارسم خط انحدار متعدد الحدود من خلال نقاط البيانات:

import numpy
import matplotlib.pyplot as plt
numpy.random.seed(2)

x = numpy.random.normal(3, 1, 100)
y = numpy.random.normal(150, 40, 100) / x

train_x = x[:80]
train_y = y[:80]

test_x = x[80:]
test_y = y[80:]

mymodel = numpy.poly1d(numpy.polyfit(train_x, train_y, 4))

myline = numpy.linspace(0, 6, 100)

plt.scatter(train_x, train_y)
plt.plot(myline, mymodel(myline))
plt.show()

نتيجة:

يمكن أن تدعم النتيجة اقتراحي الخاص بمجموعة البيانات التي تناسب الانحدار متعدد الحدود ، على الرغم من أنها ستعطينا بعض النتائج الغريبة إذا حاولنا التنبؤ بالقيم خارج مجموعة البيانات. مثال: يشير السطر إلى أن العميل الذي يقضي 6 دقائق في المتجر سيجري عملية شراء بقيمة 200. من المحتمل أن تكون هذه علامة على التجهيز الزائد.

ولكن ماذا عن نتيجة R-squared؟ تعتبر درجة R-squared مؤشرًا جيدًا لمدى ملاءمة مجموعة البيانات الخاصة بي للنموذج.


R2

تذكر R2 ، المعروف أيضًا باسم R-squared؟

يقيس العلاقة بين المحور x والمحور y ، وتتراوح القيمة من 0 إلى 1 ، حيث يعني 0 عدم وجود علاقة ، ويعني 1 أنه مرتبط تمامًا.

تحتوي وحدة sklearn على طريقة تسمى r2_score() ستساعدنا في إيجاد هذه العلاقة.

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

مثال

ما مدى ملاءمة بيانات التدريب الخاصة بي في الانحدار متعدد الحدود؟

import numpy
from sklearn.metrics import r2_score
numpy.random.seed(2)

x = numpy.random.normal(3, 1, 100)
y = numpy.random.normal(150, 40, 100) / x

train_x = x[:80]
train_y = y[:80]

test_x = x[80:]
test_y = y[80:]

mymodel = numpy.poly1d(numpy.polyfit(train_x, train_y, 4))

r2 = r2_score(train_y, mymodel(train_x))

print(r2)

ملاحظة: تظهر النتيجة 0.799 أن هناك علاقة جيدة.

أحضر مجموعة الاختبار

لقد صنعنا الآن نموذجًا لا بأس به ، على الأقل عندما يتعلق الأمر ببيانات التدريب.

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

مثال

دعنا نعثر على درجة R2 عند استخدام بيانات الاختبار:

import numpy
from sklearn.metrics import r2_score
numpy.random.seed(2)

x = numpy.random.normal(3, 1, 100)
y = numpy.random.normal(150, 40, 100) / x

train_x = x[:80]
train_y = y[:80]

test_x = x[80:]
test_y = y[80:]

mymodel = numpy.poly1d(numpy.polyfit(train_x, train_y, 4))

r2 = r2_score(test_y, mymodel(test_x))

print(r2)

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


توقع القيم

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

مثال

ما مقدار المال الذي سينفقه العميل الذي يشتري ، إذا بقي في المتجر لمدة 5 دقائق؟

print(mymodel(5))

توقع المثال أن ينفق العميل 22.88 دولارًا ، كما يبدو أنه يتوافق مع الرسم التخطيطي: