Menu
CoddyTech

שני סוגי תאים

חלק מהיחידה למידה בלתי מונחית במסלול ה-Machine Learning של Coddy. שיעור 51 מתוך 51.

מעבדה מדדה 569 דגימות רקמה, עם 30 מדידות תאים בכל אחת. יש יותר מדי בשביל לשרטט, ואף אחד לא יכול למיין אותן במבט:

רשת של 24 דגימות על פני 30 מדידות, כל תא צבוע מכחול לנמוך ועד אדום לגבוה, טלאים ללא דפוס ברור

האבחנה של כל דגימה, שפירה או ממאירה, נמצאת במעטפה סגורה. האם התאים יכולים למיין את עצמם לשני סוגים בלעדיה?

צמצמו את 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 אונליין