مرحبا يا هبر! أقدم إليكم ترجمة المقال
"كل ما تحتاج لمعرفته حول مؤامرات مبعثرة لتصور البيانات" لجورج سيف.
إذا كنت منخرطًا في تحليل البيانات وتصورها ، فمن المرجح أنك ستتعامل مع المخططات المبعثرة. على الرغم من بساطته ، تعد مخططات القطع أداة فعالة لتصور البيانات. من خلال معالجة الألوان والأحجام والأشكال ، يمكن ضمان المرونة والسمات التمثيلية للأراضي المبعثرة.
في هذه المقالة ، سوف تتعلم كل ما تحتاج لمعرفته حول تصور البيانات باستخدام مخططات التشتت. سنحاول تحليل جميع المعلمات اللازمة في استخدامها في رمز بيثون. يمكنك أيضا العثور على بعض الحيل العملية.
بناء الانحدار
حتى الاستخدام الأكثر بدائية للمخطط المبعثر يعطي بالفعل نظرة عامة عادلة لبياناتنا. في الشكل 1 ، يمكننا أن نرى بالفعل جزرًا للبيانات المدمجة والتعرف بسرعة على القيم المتطرفة.
الشكل 1
تعمل خطوط الانحدار الملائمة على تبسيط مهمة تحديد النقاط القريبة من الوسط. في الشكل 2 ، قمنا برسم رسم بياني خطي. من السهل تمامًا أن نرى في هذه الحالة أن الوظيفة الخطية ليست تمثيلية ، لأن العديد من النقاط بعيدة جدًا عن الخط.
الشكل 2
يستخدم الشكل 3 كثير الحدود من الترتيب 4 ويبدو أكثر واعدة. يبدو أنه لنموذج مجموعة البيانات هذه ، نحتاج بالتأكيد إلى كثير الحدود من النظام 4.
الشكل 3
import seaborn as sns import matplotlib.pyplot as plt df = sns.load_dataset('iris')
لون وشكل النقاط
يمكن استخدام اللون والشكل لتصور الفئات المختلفة في مجموعة البيانات. اللون والشكل بصريا واضح جدا. عندما تنظر إلى رسم بياني حيث يكون لمجموعات النقاط ألوان مختلفة لأشكالنا ، يصبح من الواضح على الفور أن النقاط تنتمي إلى مجموعات مختلفة.
ويبين الشكل 4 الطبقات التي تم تجميعها حسب اللون. ويبين الشكل 5 الطبقات ، مفصولة اللون والشكل. في كلتا الحالتين ، من الأسهل رؤية التجميع. نحن نعلم الآن أنه سيكون من السهل فصل فئة
setosa ، وما الذي يجب أن نركز عليه. من الواضح أيضًا أن الرسم البياني ذي الخط الواحد لن يكون قادرًا على الفصل بين النقاط الخضراء والبرتقالية. لذلك ، نحتاج إلى إضافة شيء لعرض المزيد من الأبعاد.
يصبح الاختيار بين اللون والشكل مسألة تفضيل. أنا شخصياً أجد اللون أكثر وضوحًا وبديهية ، لكن الخيار دائمًا لك.
الشكل 4
الشكل 5
import seaborn as sns import matplotlib.pyplot as plt df = sns.load_dataset('iris')
الرسم البياني الهامشي
يظهر في الرسم 6. مثال على رسم بياني له مدرج تكراري هامشي. يتم تثبيت الرسوم البيانية الهامشية في الأعلى والجانب ، مما يمثل توزيع النقاط للكائنات على طول الإحداثي المنسق والإحداثي. هذه الإضافة الصغيرة تعتبر رائعة بالنسبة لتوزيع النقاط وتحديد النقاط.
على سبيل المثال ، في الشكل 6 ، نرى بوضوح تركيز عالٍ للنقاط حول ترميز 3.0. وبفضل هذا الرسم البياني ، يمكنك تحديد مستوى التركيز. على الجانب الأيمن ، يمكنك رؤية أنه يوجد حوالي 3.0 نقطة على الأقل أكثر من ثلاثة أضعاف نقاط أي مجموعة منفصلة أخرى. أيضا ، باستخدام الرسم البياني الجانب الأيمن ، يمكن للمرء أن ندرك بوضوح أن القيم المتطرفة واضحة فوق علامة 3.75. يوضح المخطط العلوي أن توزيع النقاط على طول المحور X أكثر اتساقًا ، باستثناء القيم المتطرفة في أقصى اليمين.
الشكل 6
import seaborn as sns import matplotlib.pyplot as plt df = sns.load_dataset('iris') sns.jointplot(x=df["sepal_length"], y=df["sepal_width"], kind='scatter') plt.show()
الرسوم البيانية فقاعة
باستخدام مخططات الفقاعات ، نحتاج إلى استخدام العديد من المتغيرات لتشفير المعلومات. المعلمة الجديدة الملازمة لهذا النوع من التصور هي الحجم. في الشكل 7 ، نوضح كمية البطاطس التي يتم تناولها حسب طول ووزن الأشخاص الذين يتناولون الطعام. يرجى ملاحظة أن المخطط المبعثر هو مجرد أداة تصور ثنائية الأبعاد ، ولكن عند استخدام مخططات الفقاعات ، يمكننا عرض المعلومات بمهارة بثلاثة أبعاد.
هنا نستخدم
اللون والموضع والحجم ، حيث يحدد موضع الفقاعات الطول والوزن للشخص ، ويحدد اللون الجنس ، ويتم تحديد الحجم حسب كمية البطاطس المقلية. يتيح لنا مخطط الفقاعات بسهولة الجمع بين جميع السمات في رسم بياني واحد بشكل مريح حتى نتمكن من رؤية المعلومات كبيرة الحجم في شكل ثنائي الأبعاد.
الشكل 7
import numpy as np import matplotlib.pyplot as plt import matplotlib.patches as mpatches x = np.array([100, 105, 110, 124, 136, 155, 166, 177, 182, 196, 208, 230, 260, 294, 312]) y = np.array([54, 56, 60, 60, 60, 72, 62, 64, 66, 80, 82, 72, 67, 84, 74]) z = (x*y) / 60 for index, val in enumerate(z): if index < 10: color = 'g' else: color = 'r' plt.scatter(x[index], y[index], s=z[index]*5, alpha=0.5, c=color) red_patch = mpatches.Patch(color='red', label='Male') green_patch = mpatches.Patch(color='green', label='Female') plt.legend(handles=[green_patch, red_patch]) plt.title("French fries eaten vs height and weight") plt.xlabel("Weight (pounds)") plt.ylabel("Height (inches)") plt.show()