همبستگی
محاسبه همبستگی بین دو سری داده یک عملیات رایج در آمار است. در 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 برای یک مجموعه داده محاسبه میشوند. حال به توضیح دقیقتر هر بخش از کد میپردازم:
- وارد کردن کتابخانهها و پکیجها:
from pyspark.ml.linalg import Vectors from pyspark.ml.stat import Correlation
در این بخش، کتابخانهها و پکیجهای مورد نیاز برای اجرای برنامه وارد میشوند.
- تعریف داده:
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 (برای صرفهجویی در حافظه برای مقادیر صفر) تعریف شدهاند.
- ایجاد DataFrame:
df = spark.createDataFrame(data, ["features"])
در این بخش، دادههای تعریف شده به یک DataFrame تبدیل میشوند و ستون آن DataFrame به نام “features” است.
- محاسبه ماتریس همبستگی Pearson:
r1 = Correlation.corr(df, "features").head()
در این بخش، ماتریس همبستگی Pearson برای ستون “features” محاسبه میشود و در متغیر r1
ذخیره میشود.
- نمایش ماتریس همبستگی Pearson:
print("Pearson correlation matrix:\n" + str(r1[0]))
در این بخش، ماتریس همبستگی Pearson در خروجی نمایش داده میشود.
- محاسبه ماتریس همبستگی Spearman:
r2 = Correlation.corr(df, "features", "spearman").head()
در این بخش، ماتریس همبستگی Spearman برای ستون “features” محاسبه میشود و در متغیر r2
ذخیره میشود.
- نمایش ماتریس همبستگی Spearman:
print("Spearman correlation matrix:\n" + str(r2[0]))
در این بخش، ماتریس همبستگی Spearman در خروجی نمایش داده میشود.
این برنامه به صورت کامل ماتریس همبستگی Pearson و ماتریس همبستگی Spearman را برای دادههای ویژگی محاسبه کرده و در خروجی نمایش میدهد.
نکته: برای Spearman، یک همبستگی رتبهای، باید برای هر ستون یک RDD[Double] ایجاد کنیم و آن را مرتب کنیم تا رتبهها را بازیابی کنیم و سپس ستونها را به یک RDD[Vector] ملحق کنیم که نسبتاً پرهزینه است. قبل از فراخوانی corr با متد = ‘spearman’ مجموعه داده ورودی را در حافظه پنهان ذخیره کنید تا از محاسبه مجدد جلوگیری کنید.
توضیحات بیشتر در مورد همبستگی در مستندات اسپارک
مقداد علی بخشی هستم. موسیقی دان، برنامه نویس، متخصص هوش مصنوعی، علم داده، متخصص بلاکچین و توسعه دهنده ربات های هوشمند.
دانش آموخته مقطع ارشد و دکتری دانشکده فنی دانشگاه تهران هستم. با سابقه تدریس درس برنامه نویسی در دانشگاه (پردیس بین الملل کیش دانشگاه تهران)
قصد دارم شما رو به بیگ دیتا، اسپارک، هدوپ و … تو این وبسایت مسلط کنم.