sklearn decision component machine-learning scikit-learn scientific-computing

machine-learning - decision - principal component analysis python pandas



Python(scikit learn) lda colapsando a una sola dimensiĆ³n (1)

Soy muy nuevo en scikit learn y machine learning en general.

Actualmente estoy diseñando una SVM para predecir si una secuencia de aminoácidos específica será cortada por una proteasa. Hasta ahora, el método SVM parece estar funcionando bastante bien:

Me gustaría visualizar la distancia entre las dos categorías (corte y sin cortar), así que estoy tratando de usar el análisis de discriminación lineal, que es similar al análisis del componente principal, utilizando el siguiente código:

from sklearn.discriminant_analysis import LinearDiscriminantAnalysis lda = LinearDiscriminantAnalysis(n_components=2) targs = np.array([1 if _ else 0 for _ in XOR_list]) DATA = np.array(data_list) X_r2 = lda.fit(DATA, targs).transform(DATA) plt.figure() for c, i, target_name in zip("rg", [1, 0],["Cleaved","Not Cleaved"]): plt.scatter(X_r2[targs == i], X_r2[targs == i], c=c, label=target_name) plt.legend() plt.title(''LDA of cleavage_site dataset'')

Sin embargo, la LDA solo está dando un resultado 1D

In: print X_r2[:5] Out: [[ 6.74369996] [ 4.14254941] [ 5.19537896] [ 7.00884032] [ 3.54707676]]

Sin embargo, el análisis de pca dará 2 dimensiones con los datos que estoy ingresando:

pca = PCA(n_components=2) X_r = pca.fit(DATA).transform(DATA) print X_r[:5] Out: [[ 0.05474151 0.38401203] [ 0.39244191 0.74113729] [-0.56785236 -0.30109694] [-0.55633116 -0.30267444] [ 0.41311866 -0.25501662]]

editar: aquí hay un enlace a dos google-docs con los datos de entrada. No estoy usando la información de la secuencia, solo la información numérica que sigue. Los archivos se dividen entre datos de control positivo y negativo. Datos de entrada: archivo1 archivo2


LDA no es una técnica de reducción de dimensionalidad. LDA es un clasificador, el hecho de que las personas visualicen la función de decisión es solo un efecto secundario y, desafortunadamente para su caso de uso, la función de decisión para el problema binario (2 clases) es 1 dimensional . No hay nada de malo en su código, así es como se ve cada función de decisión de un clasificador binario lineal.

En general, para 2 clases obtienes como máximo una proyección de 1 dim y para K> 2 clases puedes obtener hasta la proyección de K-dim. Con otras técnicas de descomposición (como 1 vs 1) puede ir hasta K (K-1) / 2 pero nuevamente, solo para más de 2 clases.