LDA:利用类别信息,将数据投影到到最容易区分的方向。
PCA:并没有利用类别信息,只是降维后每一维特征方差都大。
# 导入iris数据集
from sklearn.datasets import load_iris
import numpy as np
iris = load_iris()
# PCA
from sklearn.decomposition import PCA
pca = PCA(n_components=2)
pca_result = pca.fit_transform(iris.data)
# LDA
from sklearn.lda import LDA
lda = LDA()
lda = LDA(n_components=2)
lda_result = lda.fit_transform(iris.data, iris.target)
# 画图
import matplotlib.pyplot as plt
# for PCA
plt.subplot(1,3,1)
plt.scatter(pca_result[iris.target==0, 0], pca_result[iris.target==0, 1], color='r')
plt.scatter(pca_result[iris.target==1, 0], pca_result[iris.target==1, 1], color='g')
plt.scatter(pca_result[iris.target==2, 0], pca_result[iris.target==2, 1], color='b')
plt.title('PCA on iris')
# for LDA
plt.subplot(1,3,2)
plt.scatter(lda_result[iris.target==0, 0], lda_result[iris.target==0, 1], color='r')
plt.scatter(lda_result[iris.target==1, 0], lda_result[iris.target==1, 1], color='g')
plt.scatter(lda_result[iris.target==2, 0], lda_result[iris.target==2, 1], color='b')
plt.title('LDA on iris')
plt.show()
ref:
http://www.letiantian.me/2015-04-03-pca-lda-nmf-iris/?utm_source=tuicool&utm_medium=referral