一、实验描述
分别使用PCA、LDA和KPCA方法对Iris数据集进行降维,利用可视化工具比较降维的效果。
二、分析及设计
Principal component analysis(PCA) 算法简介
PCA的思想就是将n维特征映射到k维上(k<n),这k维是重新构造出来的全新维度特征,而不是简单的从n维特征去除n-k维特征,这k维就是主成分。
对数据中心化
求特征的协方差矩阵
求协方差矩阵的特征值和特征向量
取最大的k个特征值所对应的特征向量
将样本点投影到选取的特征向量上
Linear Discriminant Analysis(LDA) 算法简介
可以参考这篇教程
Kernel Principal component analysis(KPCA) 算法简介
KernelPCA是PCA的一个改进版,它将非线性可分的数据转换到一个适合对齐进行线性分类的新的低维子空间上,核PCA可以通过非线性映射将数据转换到一个高维空间中,在高维空间中使用PCA将其映射到另一个低维空间中,并通过线性分类器对样本进行划分。
核函数:通过两个向量点积来度量向量间相似度的函数。常用函数有:多项式核、双曲正切核、径向基和函数(RBF) (高斯核函数)等。
三、详细实现
导入需要的模块以及数据
from sklearn.datasets import load_iris
import numpy as np
from sklearn import decomposition
import matplotlib.pyplot as plt
def load_data():
return load_iris()
def load_data_tag():
iris = load_data()
return iris.data, iris.target
1.PCA
def PCA(data, n):
from sklearn.decomposition import PCA
pca = PCA(n_components=n)
pca_result = pca.fit_transform(data.data)
return pca_result
2.LDA
def LDA(data, n):
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis as LDA
lda = LDA(n_components=n)
lda_result = lda.fit_transform(data.data, data.target)
return lda_result
3.PCA和LDA的可视化
def plot(data, n):
pca_result = PCA(data, n)
lda_result = LDA(data, n)
plt.subplot(1