![](/img/trans.png)
[英]SVD calculation error from lapack function when using scikit-learn's Linear Discriminant Analysis class
[英]How to run and interpret Fisher's Linear Discriminant Analysis from scikit-learn
我试图运行费舍尔的LDA( 1 , 2 )减少矩阵的特征数量。
基本上,正确如果我错了,给定n类样本分类,Fisher's LDA试图找到一个投影在其上的轴应该最大化值J(w),这是总样本方差与单独的方差之和的比率类。
我认为这可以用来为每个类找到最有用的功能。
我有一个m个特征的矩阵X和n个样本(m行,n列)。
我有一个样本分类y,即一个n个标签的数组,每个标签对应一个样本。
基于y我想减少功能的数量,例如,3个最具代表性的功能。
使用scikit-learn
我试过这种方式(遵循本文档 ):
>>> 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)
就足够了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.