آموزش محاسبه همبستگی با پایتون در Spark

همبستگی

محاسبه همبستگی بین دو سری داده یک عملیات رایج در آمار است. در spark.ml انعطاف‌پذیری برای محاسبه همبستگی‌های زوجی بین بسیاری از سری‌ها فراهم شده است. روش های همبستگی پشتیبانی شده در اسپارک در حال حاضر همبستگی پیرسون و اسپیرمن هستند.

Correlation ماتریس همبستگی را برای مجموعه داده ورودی بردارها با استفاده از روش مشخص شده محاسبه می کند. خروجی یک DataFrame خواهد بود که حاوی ماتریس همبستگی ستون بردارها است.

مثالی از یافتن همبستگی از طریق زبان پایتون در اسپارک

from pyspark.ml.linalg import Vectors
from pyspark.ml.stat import Correlation
# $example off$
from pyspark.sql import SparkSession

if __name__ == "__main__":
    spark = SparkSession \
        .builder \
        .appName("CorrelationExample") \
        .getOrCreate()

    # $example on$
    data = [(Vectors.sparse(4, [(0, 1.0), (3, -2.0)]),),
            (Vectors.dense([4.0, 5.0, 0.0, 3.0]),),
            (Vectors.dense([6.0, 7.0, 0.0, 8.0]),),
            (Vectors.sparse(4, [(0, 9.0), (3, 1.0)]),)]
    df = spark.createDataFrame(data, ["features"])

    r1 = Correlation.corr(df, "features").head()

    # $example off$
    assert r1 is not None
    # $example on$
    print("Pearson correlation matrix:\n" + str(r1[0]))

    r2 = Correlation.corr(df, "features", "spearman").head()

    # $example off$
    assert r2 is not None
    # $example on$
    print("Spearman correlation matrix:\n" + str(r2[0]))
    # $example off$

    spark.stop()

این کد یک نمونه از محاسبه ماتریس همبستگی برای داده‌های ویژگی با استفاده از کتابخانه‌های PySpark است. در این کد، ماتریس همبستگی Pearson و ماتریس همبستگی Spearman برای یک مجموعه داده محاسبه می‌شوند. حال به توضیح دقیق‌تر هر بخش از کد می‌پردازم:

  1. وارد کردن کتابخانه‌ها و پکیج‌ها:
   from pyspark.ml.linalg import Vectors
   from pyspark.ml.stat import Correlation

در این بخش، کتابخانه‌ها و پکیج‌های مورد نیاز برای اجرای برنامه وارد می‌شوند.

  1. تعریف داده:
   data = [(Vectors.sparse(4, [(0, 1.0), (3, -2.0)]),),
           (Vectors.dense([4.0, 5.0, 0.0, 3.0]),),
           (Vectors.dense([6.0, 7.0, 0.0, 8.0]),),
           (Vectors.sparse(4, [(0, 9.0), (3, 1.0)]),)]

در این بخش، یک مجموعه داده تعریف شده است. این مجموعه داده شامل چهار ویژگی برای چند مشاهده مختلف است. ویژگی‌ها به صورت بردارهایی از اعداد عددی یا SparseVector (برای صرفه‌جویی در حافظه برای مقادیر صفر) تعریف شده‌اند.

  1. ایجاد DataFrame:
   df = spark.createDataFrame(data, ["features"])

در این بخش، داده‌های تعریف شده به یک DataFrame تبدیل می‌شوند و ستون آن DataFrame به نام “features” است.

  1. محاسبه ماتریس همبستگی Pearson:
   r1 = Correlation.corr(df, "features").head()

در این بخش، ماتریس همبستگی Pearson برای ستون “features” محاسبه می‌شود و در متغیر r1 ذخیره می‌شود.

  1. نمایش ماتریس همبستگی Pearson:
   print("Pearson correlation matrix:\n" + str(r1[0]))

در این بخش، ماتریس همبستگی Pearson در خروجی نمایش داده می‌شود.

  1. محاسبه ماتریس همبستگی Spearman:
   r2 = Correlation.corr(df, "features", "spearman").head()

در این بخش، ماتریس همبستگی Spearman برای ستون “features” محاسبه می‌شود و در متغیر r2 ذخیره می‌شود.

  1. نمایش ماتریس همبستگی Spearman:
   print("Spearman correlation matrix:\n" + str(r2[0]))

در این بخش، ماتریس همبستگی Spearman در خروجی نمایش داده می‌شود.

این برنامه به صورت کامل ماتریس همبستگی Pearson و ماتریس همبستگی Spearman را برای داده‌های ویژگی محاسبه کرده و در خروجی نمایش می‌دهد.

نکته: برای Spearman، یک همبستگی رتبه‌ای، باید برای هر ستون یک RDD[Double] ایجاد کنیم و آن را مرتب کنیم تا رتبه‌ها را بازیابی کنیم و سپس ستون‌ها را به یک RDD[Vector] ملحق کنیم که نسبتاً پرهزینه است. قبل از فراخوانی corr با متد = ‘spearman’ مجموعه داده ورودی را در حافظه پنهان ذخیره کنید تا از محاسبه مجدد جلوگیری کنید.

توضیحات بیشتر در مورد همبستگی در مستندات اسپارک

دیدگاه‌ خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

پیمایش به بالا