explained - principal component analysis python pandas
LDA ignorando n_components? (1)
Esta es la línea relevante, reductora de LDA.transform
de LDA.transform
, usa scalings_
. Como se describe en el docstring , scalings_ tiene como máximo n_classes - 1
columna. Este es entonces el número máximo de columnas que puede esperar obtener usando la transform
. En su caso, 2 clases (True, False)
, rinde como máximo 1 columna.
Cuando intento trabajar con LDA desde Scikit-Learn, solo me proporciona un componente, aunque estoy pidiendo más:
>>> from sklearn.lda import LDA
>>> x = np.random.randn(5,5)
>>> y = [True, False, True, False, True]
>>> for i in range(1,6):
... lda = LDA(n_components=i)
... model = lda.fit(x,y)
... model.transform(x)
Da
/Users/orthogonal/virtualenvs/osxml/lib/python2.7/site-packages/sklearn/lda.py:161: UserWarning: Variables are collinear
warnings.warn("Variables are collinear")
array([[-0.12635305],
[-1.09293574],
[ 1.83978459],
[-0.37521856],
[-0.24527725]])
array([[-0.12635305],
[-1.09293574],
[ 1.83978459],
[-0.37521856],
[-0.24527725]])
array([[-0.12635305],
[-1.09293574],
[ 1.83978459],
[-0.37521856],
[-0.24527725]])
array([[-0.12635305],
[-1.09293574],
[ 1.83978459],
[-0.37521856],
[-0.24527725]])
array([[-0.12635305],
[-1.09293574],
[ 1.83978459],
[-0.37521856],
[-0.24527725]])
Como puede ver, solo está imprimiendo una dimensión cada vez. ¿Por qué es esto? ¿Tiene algo que ver con que las variables sean colineales?
Además, cuando hago esto con la PCA de Scikit-Learn, me da lo que quiero.
>>> from sklearn.decomposition import PCA
>>> for i in range(1,6):
... pca = PCA(n_components=i)
... model = pca.fit(x)
... model.transform(x)
...
array([[ 0.83688322],
[ 0.79565477],
[-2.4373344 ],
[ 0.72500848],
[ 0.07978792]])
array([[ 0.83688322, -1.56459039],
[ 0.79565477, 0.84710518],
[-2.4373344 , -0.35548589],
[ 0.72500848, -0.49079647],
[ 0.07978792, 1.56376757]])
array([[ 0.83688322, -1.56459039, -0.3353066 ],
[ 0.79565477, 0.84710518, -1.21454498],
[-2.4373344 , -0.35548589, -0.16684946],
[ 0.72500848, -0.49079647, 1.09006296],
[ 0.07978792, 1.56376757, 0.62663807]])
array([[ 0.83688322, -1.56459039, -0.3353066 , 0.22196922],
[ 0.79565477, 0.84710518, -1.21454498, -0.15961993],
[-2.4373344 , -0.35548589, -0.16684946, -0.04114339],
[ 0.72500848, -0.49079647, 1.09006296, -0.2438673 ],
[ 0.07978792, 1.56376757, 0.62663807, 0.2226614 ]])
array([[ 8.36883220e-01, -1.56459039e+00, -3.35306597e-01,
2.21969223e-01, -1.66533454e-16],
[ 7.95654771e-01, 8.47105182e-01, -1.21454498e+00,
-1.59619933e-01, 3.33066907e-16],
[ -2.43733440e+00, -3.55485895e-01, -1.66849458e-01,
-4.11433949e-02, 0.00000000e+00],
[ 7.25008484e-01, -4.90796471e-01, 1.09006296e+00,
-2.43867297e-01, -1.38777878e-16],
[ 7.97879229e-02, 1.56376757e+00, 6.26638070e-01,
2.22661402e-01, 2.22044605e-16]])