Menu
CoddyTech
flag Ar iconالعربيةdown icon

أفضل سمتين

جزء من قسم الإحصاء لتعلّم الآلة في رحلة Machine Learning على Coddy. الدرس 59 من 64.

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

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

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

فحصٌ آخر: هل النسختان شبه متطابقتين؟

first = strength.index[0]
second = strength.index[1]
print(np.round(df[first].corr(df[second]), 2))

يطبع هذا 0.85: ميزتان مرتبطتان، وليستا نسختين. عند 0.99، ستكرر الميزة الثانية الأولى ولن تضيف شيئًا جديدًا تقريبًا.

challenge icon

التحدي

متوسط

تقيس ميزات error مقدار تغيّر القياس بين خلايا عينة واحدة. هل يمكن لأقوى ميزتين التمييز بين الفئتين؟ يرتبهما الكود التمهيدي في first وsecond؛ وتضع label(ax) تسميات على المخطط.

  1. اطبع r between them: وقيمة r بينهما، مقربة إلى منزلتين عشريتين.
  2. ارسم مخططًا مبعثرًا واحدًا لكل فئة، مع وضع first على المحور الأفقي، وميّز النقاط باسم الفئة.
  3. استدعِ label(ax)، وأضف وسيلة إيضاح، ثم اعرض المخطط.

مثل هذا، لأقوى زوج من ميزات worst (r تساوي 0.82):

مخطط مبعثر بعنوان Worst Features، مع worst concave points على المحور الأفقي وworst perimeter على المحور العمودي، وتظهر العينات الخبيثة باللون الأزرق في الأعلى إلى اليمين، والحميدة باللون البرتقالي في الأسفل إلى اليسار

ثم قيّم مخططك: هل السحب منفصلة؟ وبالنظر إلى قيمة r، هل تتطابق المخططات؟

جرّب بنفسك

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_breast_cancer

cancer = load_breast_cancer(as_frame=True)
df = cancer.frame
y = cancer.target
# خصائص الخطأ العشر: مقدار تفاوت كل قياس بين خلايا عينة واحدة
X = cancer.data[cancer.feature_names[10:20]]

# مرتبة حسب القوة: first وsecond هما الأقوى
strength = np.abs(X.corrwith(y)).sort_values(ascending=False)
first = strength.index[0]
second = strength.index[1]


# يعيّن عنوان الرسم البياني ويسمّي المحورين باسمَي العنصرين
def label(ax):
    ax.set_title("Error Features")
    ax.set_xlabel(first)
    ax.set_ylabel(second)


# اكتب شيفرتك أدناه
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس الإحصاء لتعلّم الآلة

تدرّب بنفسك: مترجم Python عبر الإنترنت