Value error while generating indexes using PCA in scikit-learn
Question: Using the following function i am trying to generate index from the data:

Function:

    
    
    import numpy as np
    from sklearn.decomposition import PCA   
    
    def pca_index(data,components=1,indx=1):
        corrs = np.asarray(data.cov())
        pca   = PCA(n_components = components).fit(corrs)
        trns = pca.transform(data)
        index=np.dot(trns[0:indx],pca.explained_variance_ratio_[0:indx])
        return index
    

Index: generation from principal components

    
    
    index = pca_index(data=mydata,components=3,indx=2)
    

Following error is being generated when i am calling the function:

    
    
    Traceback (most recent call last):
    
    File "<ipython-input-411-35115ef28e61>", line 1, in <module>
    index = pca_index(data=mydata,components=3,indx=2)
    
    File "<ipython-input-410-49c0174a047a>", line 15, in pca_index
    index=np.dot(trns[0:indx],pca.explained_variance_ratio_[0:indx])
    
    ValueError: shapes (2,3) and (2,) not aligned: 3 (dim 1) != 2 (dim 0)
    

Can anyone help with the error.

According to my understanding there is some error at the following point when
i am passing the subscript indices as variable (indx):

    
    
    trns[0:indx],pca.explained_variance_ratio_[0:**indx**]
    


Answer: In `np.dot` you are trying to multiply a matrix having dimensions (2,3) with a
matrix having dimensions (2,), i.e. a vector.

However, you can only multiply NxM to MxP, e.g. (3,2) to (2,1) or (2,3) to
(3,1).

In your example the second matrix have dimensions of (2,) which, in numpy
terms, is similar but not the same as (2,1). You can reshape a vector into a
matrix with `vector.reshape([2,1])`

You might also transpose you first matrix, thus converting its dimensions from
(2,3) to (3,2).

However, make sure that you multiply appropriate matrices as the result will
differ from you might expect.

