Требования линейного дискриминантного анализа - PullRequest
0 голосов
/ 11 мая 2018

Я пытаюсь проанализировать разреженный набор данных, используя sklearn LDA (но не только этот, я также попробовал личную реализацию).Набор данных состоит из 14 столбцов и некоторого различного количества столбцов, которые я выбрал для проведения различных экспериментов, сохраняя их с наибольшим разбросом.

X = dfplants.values
print(X.shape)
(14,15)
u,s,v = np.linalg.svd(X) 
print(len(s))
y = dfplants_sup['tecnique'].values
lda = LDA(n_components=2, solver='svd', store_covariance=True)
X_lda=lda.fit_transform(X,y)

print("X_lda")
print(X_lda)


X_lda 

[[-6.03602598]
 [-6.14807425]
 [-4.02479902]
 [-5.85982518]
 [-6.96663709]
 [-5.93062031]
 [-6.24874635]
 [ 5.42840829]
 [ 6.5065448 ]
 [ 6.47761884]
 [ 6.50027698]
 [ 6.31051439]
 [ 3.57171076]
 [ 6.41965411]]

Не имеет значения, если я использую 2 или более компонентов, илиесли я оставлю все или только два с наибольшей дисперсией, я всегда получу 1 столбец в результате.Почему я получаю только один столбец?Каковы требования для применения LDA?

1 Ответ

0 голосов
/ 11 мая 2018

Согласно документации :

n_components : int, optional

    Number of components (< n_classes - 1) for dimensionality reduction.

Таким образом, если у вас есть двоичная проблема (из 2 классов), тогда число возвращаемых компонентов будет1. И это то, что вы испытываете.

...