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

نوعان من الخلايا

جزء من قسم التعلّم غير الخاضع للإشراف في رحلة Machine Learning على Coddy. الدرس 51 من 51.

قاس مختبر 569 عينة نسيجية، ولكل عينة 30 قياسًا خلويًا. عددها كبير جدًا لعرضها في رسم بياني، ولا تستطيع العين فرزها:

شبكة من 24 عينة و30 قياسًا، كل خلية فيها ملوّنة من الأزرق للقيم المنخفضة إلى الأحمر للقيم المرتفعة، في فسيفساء بلا نمط واضح

يكون تشخيص كل عينة، سواء أكان حميدًا أم خبيثًا، داخل ظرف مغلق. هل تستطيع الخلايا أن تصنّف نفسها إلى نوعين من دونه؟

اختزل القياسات الثلاثين باستخدام PCA، ثم عنقد ما تبقّى، وبعد ذلك فقط افتح الظرف لترى مدى تقارب الخلايا.

challenge icon

التحدي

صعب

يقرأ البرنامج نسبة التباين المطلوب الاحتفاظ بها، 0.7 أو أكثر؛ ويُعدّ القالب الأولي مخططًا.

  1. وحّد المقاييس، ثم احتفظ بأقل عدد من المكوّنات التي تبلغ تلك النسبة. اطبع عددها وما تحتفظ به.
  2. اجمع تلك المكوّنات باستخدام خوارزمية k-means: ‏k = 2، ‏n_init=10، ‏random_state=0.
  3. افتح الظرف: اطبع، لكل عنقود وبترتيب الأكبر أولًا، تشخيصاته والأغلبية فيه. ثم اطبع نسبة التوافق: نسبة العينات التي يطابق تشخيصها أغلبية عنقودها.
  4. أنشئ مخططًا مبعثرًا لأول مكوّنين لكل عنقود، مع تسمية mostly benign أو mostly malignant؛ ثم أظهر وسيلة الإيضاح والمخطط.

لأول 300 عينة وعند استخدام 0.8:

Components for 80% of the variance: 5 (they keep 0.844)
Cluster of 175: 146 benign, 29 malignant, so mostly benign
Cluster of 125: 8 benign, 117 malignant, so mostly malignant
Agreement with the diagnosis: 0.877

أول 300 عينة على أول مكوّنين: عنقود يغلب عليه الحميد على اليسار، وعنقود يغلب عليه الخبيث يمتد إلى اليمين، مع وسيلة إيضاح

بعد ذلك، يصف Coddy مخططك.

جرّب بنفسك

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import load_breast_cancer
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
from sklearn.cluster import KMeans

# 569 عينة نسيج، لكل منها 30 قياسًا للخلايا
cancer = load_breast_cancer(as_frame=True)
cells = cancer.data
# الظرف المختوم: حميد أم خبيث لكل عينة. لا تفتحه إلا في النهاية.
diagnosis = pd.Series(cancer.target_names[cancer.target])

# نسبة التباين التي يجب الاحتفاظ بها، 0.7 أو أكثر
share = float(input())

fig, ax = plt.subplots()
ax.set_title("Cells on Two Components")
ax.set_xlabel("Component 1")
ax.set_ylabel("Component 2")

# اكتب الكود الخاص بك أدناه
quiz iconاختبر نفسك

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

جميع دروس التعلّم غير الخاضع للإشراف

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