0

Principal Component Analysis

Unsolved
Dimensionality Reduction
Linear Algebra

Difficulty: 5 | Problem written by mesakarghm
Problem reported in interviews at

Amazon
Apple
Facebook
Google
Netflix

The principal components of a collection of points in a real coordinate space are a sequence of p unit vectors, where the ith vector is the direction of a line that best fits the data while being orthogonal to the first i-1 vectors. 

PCA is the process of computing the principle components and using them to perform a change of basis on the data.

Write a function PCA(data, dims_rescaled_data) which calculates the principal components of the given data.

Here, the dims_rescaled_data represents the number of dimensions in the rescaled data matrix. 

Sample Input:
<class 'numpy.ndarray'>
data: [[1. 2. 3. 4.] [5. 6. 7. 8.]]
<class 'int'>
dims_rescaled_data: 2

Expected Output:
<class 'tuple'>
(array([[-4., 0.], [ 4., 0.]]), array([ 3.20000000e+01, 0.00000000e+00, -1.04056574e-15, -6.06486161e-15]), array([[ 0.5 , 0. ], [ 0.5 , 0. ], [ 0.5 , -0.70710678], [ 0.5 , 0.70710678]]))

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Laboriosam sint officia maxime repellendus laudantium consectetur, obcaecati aut sunt incidunt ex in ad iusto, omnis odio quisquam maiores unde. Facere rem cupiditate culpa itaque inventore eum? Laboriosam et dolorum nemo fugit incidunt quisquam numquam? Explicabo illum laudantium minima neque quos quis id alias nihil pariatur?

Exercitationem obcaecati maxime officia modi maiores quam, ut facere enim laborum animi praesentium et facilis? Maiores harum consequatur, explicabo cumque consequatur, accusantium vel et dicta doloribus ipsam alias dignissimos facere rem possimus, dolorum culpa commodi molestiae ipsa ducimus voluptates adipisci recusandae deleniti eius soluta? Nemo quam minima quasi assumenda vero blanditiis animi odio et porro harum, voluptatum impedit voluptatibus dignissimos expedita magni et ratione ut ducimus dolorum fugit, repudiandae iure et, at minima assumenda fugiat incidunt vitae aut, numquam aperiam id nihil quam quidem ipsam voluptatem voluptatibus reiciendis quia doloremque? Quis labore quasi quo delectus pariatur nihil earum iusto optio, eaque ipsam similique, quis fugit hic reiciendis voluptatibus temporibus aperiam maiores tempora pariatur consequuntur, corporis ipsum quisquam ea ut necessitatibus numquam labore inventore delectus exercitationem?

Adipisci sequi eaque voluptas alias beatae, omnis consequuntur hic non placeat molestias debitis quidem, voluptatum repellat dolorum exercitationem labore repellendus.

This is a premium feature.
To access this and other such features, click on upgrade below.

Ready.

Input Test Case

Please enter only one test case at a time
numpy has been already imported as np (import numpy as np)