在上一篇博客中B oBo老师介绍了主成分分析法的原理,以及用代码实现了如何求得一个主成分。那这篇文章中我们主要讲述如何求得前N个主成分,以及如何用代码实现。
1、如何求取前N个主成分?
主要方法是 数据进行改变,将数据在第一个主成分上的分量给去掉,然后在新的数据上求取第一主成分, 而在新数据的第一主成分其实就是原来数据的第二主成分,那么如何求取新数据呢,如下图。
上图中X‘就是原来数据减去在第一主成分上分量获取的新数据, w是第一主成分,X‘(project)是数据X在w方向的分量。
代码实现:
'''
封装自己的PCA算法,用来求取前N个主成分
'''
import numpy as np
import matplotlib.pyplot as plt
class PCA(object):
def __init__(self, n_components):
self.n_components = n_components # 求前几个主成分的个数
self.components_ = None
def fit(self, x_train, eta=0.01, n_iters=1e4, eplosion=1e-18):
def demean(X):
""