في نافذة الطباعة اختر «حفظ كملف PDF» كوجهة.
تعلم الآلة، الأسبوع 2
انظر إلى البيانات قبل أن تبني نموذجها: المخططات التي يستخدمها كل دفتر في المقرر، ومتى يناسب كل منها.
df.plot.scatter وdf.plot.histboxplot وviolinplot وregplot وlmplotالأسبوع 2 من الخطة
| الجزء | ما نفعله | الزمن |
|---|---|---|
| 1 | Matplotlib على بيانات العيادة، ومدرج تكراري يدويا | 30 دقيقة |
| 2 | بيانات الاستطلاع: مخطط خطي، ومخطط صندوقي يدويا | 20 دقيقة |
| 3 | pandas وSeaborn على بيانات النبيذ | 20 دقيقة |
| 4 | الارتباط، والخريطة الحرارية، واختيار المخطط | 15 دقيقة |
| 5 | تمارين مع الإجابات، ثم الخلاصة | 35 دقيقة |
https://colab.research.google.com/github/
tirthajyoti/Machine-Learning-with-Python/blob/master/
Pandas%20and%20Numpy/Matplotlib_Seaborn_basics.ipynbالجزء 1
شكل واحد، يبنى استدعاء بعد استدعاء
اثنا عشر مريضا: العمر بالسنوات، والوزن بالكجم، والطول بالسم
people = ['P1', 'P2', 'P3', 'P4', 'P5', 'P6',
'P7', 'P8', 'P9', 'P10', 'P11', 'P12']
age = [21, 12, 32, 45, 37, 18,
28, 52, 5, 40, 48, 15]
weight = [55, 35, 77, 68, 70, 60,
72, 69, 18, 65, 82, 48]
height = [160, 135, 170, 165, 173, 168,
175, 159, 105, 171, 155, 158]import matplotlib.pyplot as plt
plt.scatter(age, height)
plt.show()
كل استدعاء إضافي يضيف عنصرا واحدا إلى الشكل نفسه
| الاستدعاء | ما يضيفه |
|---|---|
plt.figure(figsize=(8, 6)) | حجم الشكل بالبوصات |
plt.title وplt.xlabel وplt.ylabel | النصوص المحيطة بالمخطط |
plt.ylim(100, 200) | المدى الظاهر من y |
plt.xticks(list) | مواضع علامات التدريج على x |
| الاستدعاء | ما يضيفه |
|---|---|
plt.scatter(c=, s=, edgecolors=) | لون النقطة وحجمها ولون إطارها |
plt.text(x, y, s) | نص عند نقطة بيانات |
plt.vlines وplt.hlines | خطوط رأسية وأفقية |
plt.legend(list, loc=2) | مفتاح رسم، أعلى اليسار |
plt.xticks([i * 5 for i in range(12)],
fontsize=15)[0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55]range(12) القيم i = 0 إلى 11، مضروبة في 5: اثنتا عشرة علامة تدريج حتى 55.
مقارنة رقم واحد بين عناصر مسماة؛ ويبدأ كل عمود من الصفر
plt.figure(figsize=(12, 4))
plt.bar(x=people, height=weight,
width=0.6, color='orange',
edgecolor='k', alpha=0.6)
plt.xticks(fontsize=14, rotation=30)
plt.show()width=0.6: يملأ كل عمود 60% من المساحة المخصصة لهalpha=0.6: شفافية جزئيةrotation=30: تسميات مائلة
الخطوة 1 من 3
plt.hist(weight, color='red', edgecolor='k', alpha=0.75, bins=5)الخطوة 2 من 3
تضم الفئة حافتها اليسرى دون اليمنى؛ والفئة الأخيرة تضم 82 أيضا
| الفئة | الأوزان داخلها | العدد |
|---|---|---|
| 18 إلى 30.8 | 18 | 1 |
| 30.8 إلى 43.6 | 35 | 1 |
| 43.6 إلى 56.4 | 55, 48 | 2 |
| 56.4 إلى 69.2 | 68, 60, 69, 65 | 4 |
| 69.2 إلى 82 | 77, 70, 72, 82 | 4 |
الخطوة 3 من 3
1, 1, 2, 4, 4 هو 12، واحد لكل مريضplt.hist التكرارات والحواف نفسها
الجزء 2
خط عبر الزمن، وصندوق حول التشتت
np.random.seed(0) # added
days = np.arange(1, 31)
candidate_A = 50 + days * 0.07 \
+ 2 * np.random.randn(30)
candidate_B = 50 - days * 0.1 \
+ 3 * np.random.randn(30)
plt.style.use('fivethirtyeight')
plt.plot(days, candidate_A, 'o-', c='blue')
plt.plot(days, candidate_B, '^-', c='green')plt.style.use مفعلا في كل المخططات التالية
الخطوة 1 من 5
رتب، ثم أوجد الوسيط
sorted: 105 135 155 158 159 160 165 168 170 171 173 175
position: 0 1 2 3 4 5 6 7 8 9 10 11الخطوة 2 من 5
الخطوة 3 من 5
الخطوة 4 من 5
الحدان: 137.75 و189.75
| الجزء | القيمة | السبب |
|---|---|---|
| الشارب الأدنى | 155 | أصغر طول عند 137.75 أو أعلى |
| الشارب الأعلى | 175 | أكبر طول عند 189.75 أو أدنى |
| القيم الشاذة | 105, 135 | أدنى من الحد الأدنى: P9 وP2، الطفلان |
الخطوة 5 من 5
plt.boxplot(x=[height], showmeans=True)
plt.style.use('ggplot')
plt.boxplot(x=[candidate_A, candidate_B],
showmeans=True)
plt.xticks([1, 2], ['Candidate A', 'Candidate B'])| A | B | |
|---|---|---|
| الوسيط | 51.947 | 47.389 |
| Q1 إلى Q3 | 50.87 إلى 53.53 | 45.35 إلى 48.89 |
| القيمة الشاذة | 46.364 | 54.452 |
| المتوسط | 51.971 | 47.581 |

الجزء 3
سم الأعمدة، ودع المكتبة تتولى الباقي
df = pd.read_csv("https://raw.githubusercontent.com/tirthajyoti/"
"Stats_data_science_ValleyML/master/Notebooks/Data/wine.data.csv")
df.head()df.shape هي (178, 14): 178 عينة نبيذ، و14 عموداClass القيم 1 و2 و3 (59 و71 و48 عينة)Alcohol وFlavanoids وColor intensity وProlinedf.plot.scatter('Alcohol', 'Color intensity')
plt.show()plt.xlabel وأمثالها تعمل
df['Alcohol'].plot.hist(bins=20, figsize=(5, 5),
edgecolor='k')
import seaborn as sns
sns.boxplot(x='Class', y='Alcohol', data=df)
sns.violinplot(x='Class', y='Alcohol', data=df)
sns.regplot(x='Alcohol', y='Color intensity',
data=df)
sns.lmplot(x='Alcohol', y='Color intensity',
hue='Class', data=df)hue='Class' النقاط حسب الصنف ويلائم خطا لكل صنف| الصنف | الميل |
|---|---|
| 1 | 1.094 |
| 2 | 0.464 |
| 3 | 1.527 |

الجزء 4
كل زوج من الأعمدة في صورة واحدة
الخطوة 1 من 2
P1 وP4 وP6 وP10: الأطوال 160 و165 و168 و171 والأوزان 55 و68 و60 و65
| المريض | الانحرافات | حاصل الضرب | المربعات |
|---|---|---|---|
| P1 | -6, -7 | 42 | 36, 49 |
| P4 | -1, 6 | -6 | 1, 36 |
| P6 | 2, -2 | -4 | 4, 4 |
| P10 | 5, 3 | 15 | 25, 9 |
| المجموع | 47 | 66, 98 |
الخطوة 2 من 2
corr_mat = np.corrcoef(df, rowvar=False)
corr_mat.shape # (14, 14)
corr_df = pd.DataFrame(corr_mat,
columns=df.columns, index=df.columns)
sns.heatmap(corr_df, linewidth=1,
cmap='plasma')rowvar=False: المتغيرات هي الأعمدة
| السؤال | الإجابة | r |
|---|---|---|
الأكثر ارتباطا بـClass | Flavanoids | -0.847 |
| التاليان | OD280/OD315 وTotal phenols | -0.788, -0.719 |
| الزوج الأكثر ارتباطا | Total phenols وFlavanoids | 0.865 |
| الزوج الأقل ارتباطا | Ash وOD280/OD315 | 0.004 |
| السؤال | المخطط |
|---|---|
| هل يتغير رقمان معا؟ | الانتشار، regplot |
| كيف يتغير رقم عبر الزمن؟ | الخطي |
| كيف تتقارن عناصر مسماة؟ | الأعمدة |
| السؤال | المخطط |
|---|---|
| ما شكل عمود واحد؟ | المدرج التكراري |
| كيف تختلف المجموعات في التشتت؟ | الصندوقي، الكمان |
| أي الأعمدة الكثيرة مرتبط بعضها ببعض؟ | الخريطة الحرارية |
plt.style.use يبقى مفعلا في المخططات التاليةالتمارين
نحو 30 دقيقة
نحو 7 دقائق
| الفئة | القيم | العدد |
|---|---|---|
| 12 إلى 20 | 12, 15 | 2 |
| 20 إلى 28 | 21, 22, 26 | 3 |
| 28 إلى 36 | 30, 31, 33 | 3 |
| 36 إلى 44 | 38, 44 | 2 |
نحو 8 دقائق
| الجزء | الموضع | القيمة |
|---|---|---|
| Q1 | 0.25 x 9 = 2.25 | 55 + 0.25 x 2 = 55.5 |
| الوسيط | 0.5 x 9 = 4.5 | 58 + 0.5 x 2 = 59 |
| Q3 | 0.75 x 9 = 6.75 | 61 + 0.75 x 2 = 62.5 |
نحو 5 دقائق
نحو 10 دقائق
sns.boxplot(x='Class', y='Flavanoids', data=df): أي صنف له أعلى وسيط؟ وأي الصناديق تظهر فيها قيم شاذة؟df['Proline'].plot.hist(bins=10): كم عينة في أطول فئة، وبين أي حافتين؟ (يعطي np.histogram الأرقام الدقيقة)sns.regplot(x='Total phenols', y='Flavanoids', data=df): ما إشارة الميل؟ وما قيمة r باستخدام np.corrcoef؟['Class', 'Alcohol', 'Flavanoids', 'Proline'] فقط: أي زوج له أكبر |r|؟| المهمة | الإجابة |
|---|---|
| 1 | الوسيطات 2.98 و2.03 و0.685: الصنف 1. القيم الشاذة: الصنف 2 (5.08)، والصنف 3 (1.57) |
| 2 | 41 عينة بين 558.4 و698.6 |
| 3 | موجب: الميل 1.380، وr = 0.865 |
| 4 | Class وFlavanoids، r = -0.847، كما في الخريطة الحرارية الكاملة |
x= أو hue= البيانات حسب المجموعةMahmoud Abas|تصوير البيانات باستخدام Matplotlib وSeaborn