Menu
CoddyTech

דנדרוגרמות

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

העץ הפותח של הפרק הוא דנדרוגרמה. כל סוגר מחבר בין שתי קבוצות בגובה שבו הן התמזגו: ככל שרגליו גבוהות יותר, כך הן היו רחוקות יותר זו מזו.

חתכו אותו בקו, וכל ענף שהקו חוצה הופך לקבוצה. כאן, 4:

עץ כדורי הספורט עם קו מקווקו בגובה 1.2. מתחתיו, ארבע קבוצות: סופטבול, קריקט ובייסבול; טניס, טניס שולחן וגולף; כדורסל לבדו; כדורעף, כדוריד וכדורגל

‏scipy בונה את העץ, מצייר אותו וחותך אותו באמצעות fcluster:

from scipy.cluster.hierarchy import linkage, dendrogram, fcluster
Z = linkage(scaled, "ward")
dendrogram(Z, labels=names, leaf_rotation=90, color_threshold=1.2, ax=ax)
ax.axhline(1.2, color="gray", linestyle="--")
groups = fcluster(Z, t=1.2, criterion="distance")
print(groups)

זה מדפיס מספר קבוצה לכל כדור, כאשר כדורסל לבדו:

[2 2 2 1 1 1 3 3 3 4]

חתכו דרך הקטעים הארוכים ביותר: הקבוצות שלמטה רחוקות זו מזו.

challenge icon

אתגר

בינוני

מדריך ימי מקבץ 16 לווייתנים ודולפינים לפי אורך, משקל ועומק צלילה. קוד הפתיחה מבצע להם קנה מידה וקורא את גובה החיתוך, cut.

  1. בנה את עץ Ward Z וצייר אותו על ax: שמות בעלי החיים מסובבים ב־90 מעלות, והצבעים נעצרים בגובה החיתוך.
  2. צייר את החיתוך כקו אפור מקווקו, ואז הצג את התרשים.
  3. הדפס את מספר הקבוצות.

עבור 11 פירות וחיתוך בגובה 3.5:

Cut at 3.5: 3 groups

עץ שכותרתו Fruits, שמות העלים נמשכים כלפי מעלה, וקו אפור מקווקו בגובה 3.5 חוצה שלושה ענפים צבעוניים: לימון, ליים ותות שדה; תפוז, אשכולית ומנגו; ענבים, דובדבן, בננה, תפוח ואגס

Coddy מתאר את העץ שלך.

נסו בעצמכם

import pandas as pd
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler
from scipy.cluster.hierarchy import linkage, dendrogram, fcluster

# 16 לווייתנים ודולפינים: אורך הגוף (m), משקל (tonnes), עומק הצלילה המרבי (m)
whales = pd.read_csv("whales.csv")
names = list(whales["animal"])
scaled = StandardScaler().fit_transform(whales[["length_m", "weight_t", "dive_m"]])
cut = float(input())

fig, ax = plt.subplots()
fig.subplots_adjust(bottom=0.3)  # מקום לשמות מתחת לעץ
ax.set_title("Whales and Dolphins")
ax.set_ylabel("Merge height")

# כתבו את הקוד שלכם למטה
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה למידה בלתי מונחית

תרגלו בעצמכם: קומפיילר Python אונליין