PCA:主成分分析
LDA:线性判别分析
PCA与LDA的异同点:
相同点:
两者都可对数据完成降维操作
两者在降维时都使用了矩阵分解的思想
两者都假设数据服从高斯分布(正态分布)
不同点:
LDA是监督学习;PCA是无监督学习
LDA除了降维外,还可以用于分类
LDA使得类内距离小,类间距离大;PCA去除原始数据中冗余的特征,使得投影在各个维度的方差尽可能大
LDA关注分类能力,不保证投影到的坐标系是正交的;PCA投影的坐标系都是正交的
PCA降维
# pca
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from sklearn.datasets.samples_generator import make_blobs
from sklearn.decomposition import PCA
import warnings
warnings.filterwarnings('ignore')
# x为样本特征,每个样本3个特征,y为样本簇类别,共4个簇, 共1000个样本
x, y = make_blobs(n_samples=1000, n_features=3, centers=[[0, 0, 0], [1, 1, 1], [2, 2, 2], [3, 3, 3]], cluster_std=[0.2, 0.2, 0.2, 0.2],
random_state =8)
fig = plt.figure()
ax = Axes3D(fig)
plt.scatter(x[:, 0], x[:, 1], x[:, 2], marker='o')
plt.show()
x_pca = PCA(n_components=2).fit_transform(x)
plt.scatter(x_pca[:, 0], x_pca[:, 1])
plt.show()