我正在尝试运行Fisher的LDA(12)以减少矩阵特征的数量。

基本上,如果我错了,就给定n个样本分类为多个类别,这是正确的,Fisher的LDA会尝试找到一个投影在其上的轴应使值J(w)最大化,该值是样本总方差与单独方差之和的比值类。

我认为这可以用来为每个类找到最有用的功能。

我有m个特征和n个样本(m行,n列)的矩阵X。

我有一个样本分类y,即n个标签的数组,每个样本一个。

基于y,我想将特征数量减少到例如3个最具代表性的特征。

我以这种方式使用scikit-learn(在this documentation之后):

>>> import numpy as np
>>> from sklearn.lda import LDA
>>> X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])
>>> y = np.array([1, 1, 1, 2, 2, 2])
>>> clf = LDA(n_components=3)
>>> clf.fit_transform(X, y)
array([[ 4.],
   [ 4.],
   [ 8.],
   [-4.],
   [-4.],
   [-8.]])

此时我有些困惑,如何获得最具代表性的功能?

最佳答案

装配分类器后,您要寻找的功能在clf.coef_中。

请注意n_components=3在这里没有意义,因为X.shape[1] == 2即您的特征空间只有二维。

您无需调用fit_transform即可获得coef_,只要调用clf.fit(X, y)就足够了。

07-24 21:20