تحلیل داده های چند بعدی در پایتون – راهنمای کاربردی


«تحلیل دادههای چند بعدی» (Multidimensional Data Aanalysis)، نوع مهم و مفیدی از تحلیلها است که امروزه با توجه به افزایش حجم و البته، ابعاد دادهها، از اهمیت به سزایی برخوردار است. در این نوع از تحلیلها، روابط گوناگون موجود میان متغیرها و به طور کل، دادهها، در نظر گرفته میشوند. در ادامه، برخی از روشهای تحلیل داده های چند بعدی در پایتون مورد بررسی قرار میگیرد.
مجموعه داده مورد استفاده برای تحلیل دادههای چند بعدی و چند متغیره
مجموعه دادهای که در این مطلب برای تحلیل داده های چندبُعدی در پایتون مورد استفاده قرار گرفته است، «Zoo Data Set» نام دارد.
مشخصات این مجموعه داده در جدول زیر ارائه شده است.
خصیصه مجموعه داده | چند متغیره |
نوع ویژگیها | دستهای، صحیح |
نوع وظیفه مربوطه | دستهبندی |
تعداد نمونهها | ۱۰۱ |
تعداد ویژگیها | ۱۷ |
حاوی مقادیر ناموجود؟ | خیر |
این مجموعه داده را میتوان از اینجا دانلود کرد.
تحلیل داده های چند بعدی در پایتون
در راستای انجام تحلیل، ابتدا باید مجموعه داده را «وارد» (Import | ایمپورت) کرد.
بدین منظور، میتوان از قطعه کد زیر استفاده کرد.
خروجی قطعه کد بالا، به صورت زیر است.
نکته: نوع ویژگیهایی که در این مجموعه داده وجود دارند، معمولا «دستهای» (Categorical) هستند. روش مورد استفاده در این مطلب برای تحلیل دادههای دستهای، بسیار ساده و قابل درک است و تفسیر و پیادهسازی آن نیز آسان خواهد بود. روش مورد استفاده در این مطلب، شامل «تحلیل همبستگی» (Correlation Analysis)، «تحلیل مولفه اساسی» (Principal Component Analysis | PCA) و «تحلیل داده اکتشافی» (Exploratory Data Analysis | EDA) میشود.
تحلیل خوشه
با توجه به آنکه دادههای موجود بر مبنای ویژگیهای انواع مختلف حیوانات است، میتوان حیوانات را در گروههای گوناگون (خوشهها) یا زیرگروههایی با استفاده از روشهای خوشهبندی شناخته شدهای مانند «K-میانه» (K-Means)، «خوشهبندی سلسله مراتبی» (Hierarchical Clustering) و «K-نزدیکترین همسایگی» (K-Nearest Neighbours | KNN) دستهبندی کرد.
به منظور حفظ سادگی، به نظر میرسد که خوشهبندی K-Means در این مثال گزینه مناسبتری باشد. خوشهبندی دادهها با استفاده از روش خوشهبندی K-Means با استفاده از ماژول KMeans از cluster class از کتابخانه پایتون «سایکیتلِرن» (Scikit-Learn) انجام میشود. قطعه کد مورد استفاده در این راستا، در ادامه آمده است.
خروجی قطعه کد بالا، به صورت زیر است.
در اینجا، اینرسی کلی خوشه برابر با 119.70392382759556 است. این مقدار در متغیر kmeans.inertia_ ذخیره شده است.
تحلیل EDA
برای انجام تحلیلهای EDA، نیاز به کاهش ابعاد دادههای چند متغیره موجود به دادههای دوبُعدی و سهبُعدی وجود دارد. برای رسیدن به این مقصود، میتوان از «تحلیل مولفه اساسی» (Principal Component Analysis | PCA) استفاده کرد.
برای اعمال PCA، میتوان از PCA module از class decomposition، از کتابخانه sklearn به صورت زیر استفاده کرد.
خروجی قطعه کد بالا، به صورت زیر است.
خروجی داده بالا، نشانگر دادههای کاهش یافته به سهبُعد است که میتوان تحلیل EDA را روی آنها انجام داد.
نکته: دادههای کاهش یافته تولید شده به وسیله PCA را میتوان به طور غیر مستقیم برای انجام انواع گوناگونی از تحلیلها استفاده کرد؛ اما این دادهها به طور مستقیم توسط انسان قابل تفسیر نیستند.
نمودار نقطهای، یک نمودار دوبُعدی/سهبُعدی است که برای تحلیل خوشههای گوناگون در دادههای دوبُعدی/سهبُعدی مفید هستند. نمودار نقطهای سهبُعدی دادههایی که پیش از این تولید شدهاند را میتوان با استفاده از روشی که در ادامه بیان شده است، ترسیم کرد.
کد زیر یک کد «پایتونیک» (Pythonic) است که آرایهای از رنگهای مرتب شده بر اساس رنگ، مقدار و اشباع آنها را تولید میکند. در این نمودار نقطهای، که در آن تعداد رنگها تقریبا برابر با تعداد خوشهها است. در اینجا، هر رنگ، به یک خوشه تخصیص یافته و برای مشخص کردن یک حیوان به عنوان یک نقطه در هنگام ترسیم آن در یک نمودار/فضای سهبُعدی است (در این مثال، نمودار نقطهای).
کد زیر یک کد پایتونیک است که یک نمودار نقطهای سهبُعدی را تولید میکند که در آن، هر نقطه داده دارای یک رنگ مرتبط به خوشه متناظر آن است.
خروجی قطعه کد بالا، به صورت زیر است.
تحلیل دقیق نمودار نقطهای میتواند به این نظریه بیانجامد که خوشههای شکل گرفته با استفاده از دادههای اولیه، قدرت بیان کافی را ندارند. برای حل این مشکل، نیاز به کاهش دادهها به دادههایی است که میتوانند خوشههای مفیدی تولید کنند. یک راه برای تولید چنین ویژگیهایی، انجام تحلیل همبستگی است. این کار را میتوان با ترسیم نمودار «نقشه گرمایی» (Heatmap) و «سطحی سهبُعدی» (Trisurface) انجام داد. در این راستا، میتوان از قطعه کد زیر استفاده کرد.
خروجی قطعه کد بالا به صورت زیر است.
کد زیر برای تولید یک نمودار سطحی سهبُعدی از «ماتریس همبستگی» (Correlation Matrix) با ساخت لیستی از تاپلها که در آنها یک تاپل حاوی مقادیر مختصات و همبستگی به ترتیب اسامی حیوانات است، مورد استفاده قرار میگیرد. «شبهکد» (Psuedocode) مورد استفاده برای این کار در زیر آمده است.
# PsuedoCode tuple -> (position_in_dataframe(feature1), position_in_dataframe(feature2), correlation(feature1, feature2))
کد مورد استفاده برای ترسیم نمودار سطحی سهبُعدی ماتریس همبستگی به صورت زیر است.
خروجی قطعه کد بالا به صورت زیر است.
با استفاده از نمودار گرمایشی و سطحی سهبُعدی، میتوان استدلالهایی پیرامون چگونگی انتخاب یک مجموعه کوچکتر از ویژگیهای مورد استفاده برای انجام تحلیل خوشه داشت. به طور کلی، جفت ویژگیها با مقادیر همبستگی بالا، دارای قدرت بیان بالایی هستند و میتوان از آنها برای تحلیلهای بیشتر استفاده کرد.
در این مثال، با نگاهی به هر دو نمودار، میتوان به یک لیست عقلانی از هفت ویژگی [“milk”, “eggs”, “hair”, “toothed”, “feathers”, “breathes”, “aquatic”] رسید. با اجرای مجدد تحلیل خوشه روی زیرمجموعه مجموعه ویژگیها، میتوان نمودار نقطهای با استلال بهتر پیرامون چگونگی توزیع حیوانات مختلف در میان گروههای گوناگون را به دست آورد.
در اینجا، شاهد یک اینترسی خوشه کاهش یافته به 14.479670329670329 هستیم که در واقع بسیار کمتر از اینرسی اولیه است.
اگر نوشته بالا برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای آمار، احتمالات و دادهکاوی
- آموزش هوش مصنوعی
- مجموعه آموزشهای برنامه نویسی پایتون (Python)
- داده کاوی (Data Mining) — از صفر تا صد
- یادگیری علم داده (Data Science) با پایتون — از صفر تا صد
- معرفی منابع جهت آموزش یادگیری عمیق (Deep Learning) — راهنمای کامل
^^