با استفاده از SciPy و NumPy یک تابع بنویسید که یک مجموعه داده دوبعدی را بگیرد، دادهها را مرکزیسازی کند، با استفاده از SVD مؤلفههای اصلی را محاسبه کند و نسبت واریانس توضیح دادهشده توسط هر مؤلفه را بازگرداند.
8.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:41 0.0
برای حل این مسئله از numpy برای بارگذاری آرایه و مرکز کردن دادهها (کاهش میانگین هر ستون) و از scipy.linalg.svd برای محاسبه SVD ماتریس دادهٔ مرکزیشده استفاده کنید؛ سپس از مقادیر منفرد برای محاسبه واریانس هر مؤلفه و نسبت واریانس توضیح دادهشده (explained variance ratio) بهره ببرید. نکات: دادهها را قبل از SVD مرکز کنید (و در صورت نیاز نرمالسازی کنید)، برای پایداری عددی از scipy.linalg.svd استفاده کنید و میتوانید خروجی را به صورت یک آرایه از نسبتها بازگردانید تا برای رسم نمودار scree یا انتخاب مؤلفهها قابل استفاده باشد.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای 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 یا انتخاب مؤلفهها استفاده شود.
گزارش