如何从scikit学习中运行和解释Fisher线性判别分析

2024-04-29 21:08:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图运行Fisher的LDA(12)来减少矩阵的特征数。

基本上,如果我错了,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.]])

此时我有点困惑,如何获得最具代表性的特征呢?


Tags: importnp矩阵特征标签特性array比率
1条回答
网友
1楼 · 发布于 2024-04-29 21:08:06

您要查找的功能位于安装分类器后的clf.coef_中。

注意n_components=3在这里没有意义,因为X.shape[1] == 2,即您的功能空间只有两个维度。

您不需要调用fit_transform来获得coef_,调用clf.fit(X, y)就足够了。

相关问题 更多 >