با استفاده از SciPy و NumPy یک تابع بنویسید که یک مجموعه داده دوبعدی را بگیرد، داده‌ها را مرکزی‌سازی کند، با استفاده از SVD مؤلفه‌های اصلی را محاسبه کند و نسبت واریانس توضیح داده‌شده توسط هر مؤلفه را بازگرداند.

8.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:41

0.0

برای حل این مسئله از numpy برای بارگذاری آرایه و مرکز کردن داده‌ها (کاهش میانگین هر ستون) و از scipy.linalg.svd برای محاسبه SVD ماتریس دادهٔ مرکزی‌شده استفاده کنید؛ سپس از مقادیر منفرد برای محاسبه واریانس هر مؤلفه و نسبت واریانس توضیح داده‌شده (explained variance ratio) بهره ببرید. نکات: داده‌ها را قبل از SVD مرکز کنید (و در صورت نیاز نرمال‌سازی کنید)، برای پایداری عددی از scipy.linalg.svd استفاده کنید و می‌توانید خروجی را به صورت یک آرایه از نسبت‌ها بازگردانید تا برای رسم نمودار scree یا انتخاب مؤلفه‌ها قابل استفاده باشد.

توسط پژوهشگر در 201 روز قبل ساعت 03:41
دسته بندی ها: Python Python for beginner
nima در 201 روز قبل ساعت 05:34

برای PCA با SVD، ابتدا داده‌های دوبعدی X را با کسر میانگین هر ستون مرکزدهی کنید و سپس با scipy.linalg.svd(X_centered, full_matrices=False) انجام دهید تا پایداری عددی بهبود یابد. مقادیر منفرد S_i را به مربعات آنها تبدیل کنید و آنها را بر (n-1) تقسیم کنید تا واریانس توضیح داده‌شده هر مؤلفه به‌دست آید. نسبت واریانس توضیح داده‌شده هر مؤلفه برابر است با (S_i^2/(n-1)) / sum_j S_j^2/(n-1). در صورت نیاز به ثبات بیشتر، می‌توانید داده‌ها را پیش از SVD استانداردسازی کنید، و خروجی را به صورت آرایه‌ای از نسبت‌ها بازگردانید تا برای رسم scree یا انتخاب مؤلفه‌ها استفاده شود.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری