接上一篇:这次与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
语音图像视频深度-学习群
来源:CSDN
作者:SpeechImageKing
链接:https://blog.csdn.net/SPESEG/article/details/103926707