摘要
本文使用纯 Python 和 scikit-learn 对比实现PCA降维方法.
相关
原理和详细解释, 请参考: :
特征工程PCA降维方法的最大方差理论详解
文章索引 :
https://blog.csdn.net/oBrightLamp/article/details/85067981
正文
1. PCA 类
文件目录 : vanilla_nn/pca.py
import numpy as np
class PCA(object):
"""
many thanks to vinhkhuc
(https://github.com/vinhkhuc/VanillaML)
i copy the source code and do some more.
"""
def __init__(self, n_components=3):
self.n_components = n_components
self.mean = None
self.v_components = None
self.explained_variance_ratio_ = None
def fit(self, w):
self.mean = w.mean(axis=0)
mean_x = w - self.mean
# The returned eigenvectors are sorted in the
# decreasing order of their corresponding eigenvalues.
u, s, v = np.linalg