sklearn PCA与LDA对比

上一篇:这次与LDA进行对比,看下效果如何。

1用sklearn产生的随机10个类别数据

初始特征为30个,由于下面条件限制,只能设置小于9的数,因此选择了8

n_components <= min(n_features, n_classes - 1)

然后再经t-SNE显示,效果令人失望至极!!!搞不懂为啥子

X origin shape, (1000, 30)
after LDA,X shape, (1000, 8)

所以我不知道LDA到底在干啥子,啥几把玩意,简直是垃圾。

同样将PCA后的维度设置为8,发现也是垃圾,卧槽。与上图基本一样,哪里出错了???

可将原始数据直接t-SNE看看结果,发现与上图类似,卧槽,这就有鬼了。猜测是原始数据有问题。

这个数据生成的函数有毛病,暂时忽略这个数据。

2依旧用MNIST数据【数据来源sklearn】

但这个有警告产生,意思是行列式和为近乎0,接近于奇异矩阵,这样的矩阵可能求逆的结果不靠谱

Warning (from warnings module):
  File "D:\python\lib\site-packages\sklearn\discriminant_analysis.py", line 388
    warnings.warn("Variables are collinear.")
UserWarning: Variables are collinear.

关键code

lda = LinearDiscriminantAnalysis(n_components=9)#n_components <= min(n_features, n_classes - 1)

因为上面条件的限制,可能造成结果的不可靠,在PCA中,若为9,结果如下

尽管看起来LDA还是不错,但这需要知道数据的标签,如果不知道标签的话,是没法LDA的

将PCA后为15,20的效果的确可能赶不上LDA

如果数据分类无误的话,也就是说没有那么多脏数据的话是可以进行LDA的。

但如果未知标签,还是老老实实PCA吧。

3抖音1视频数据,inceptionV3特征 ,这个似乎不能进行LDA吧,上面条件限制的话,如果只是盲目得分为0,1视频,估计LDA只能为1维度,这个且看如下

因为只有1维了,所以无需t-SNE了,直接散点画出即可,已知上面的是1,下面的是0.但这样LDA后有什么用呢??

没用。

如果仅仅是为了展示分类效果,再差劲的结果都能如此好。如果是查看分类数据的距离,或者说他们之间有多大差别,还是PCA吧。

LDA有点自欺欺人。拜拜

另外有相关问题可以加入QQ群讨论,不设微信群

QQ群:868373192 

语音图像视频深度-学习群

发布了189 篇原创文章 · 获赞 170 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/SPESEG/article/details/103926707