我试图运行Fisher的LDA(1,2)来减少矩阵的特征数。
基本上,如果我错了,Fisher的LDA试图找到一个轴,投影到轴上的值应该最大化J(w),这是总样本方差与单独类内方差之和的比率。
我认为这可以用来为每个类找到最有用的特性。
我有一个矩阵X的m个特征和n个样本(m行,n列)。
我有一个样本分类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)
就足够了。相关问题 更多 >
编程相关推荐