PCA 主成分分析
主要作用于降维,在减少维度的同时保留最多的特征。因此也有降噪的功效。
当要删除多余维度的时候,例如某数据有A,B两个向量(维度),我们希望在这两个维度中删除一个,如果单独删除A或B的话那么我们的数据会丢失很多特征。有一种能保留最多特征的方法就是在这两条向量中间拉出一条新的向量,这条新的向量和A,B的方差越大则能保留越多的特征
- demean 将矩阵减去每个维度(每列)的均值,方便计算方差
- 使用梯度上升发计算最大方差,得到向量
- 将原矩阵减去新的特征向量就得到了除了主成分外的次成分,以此类推可以得到多个次成分形成主成分的矩阵,维度和原矩阵相同。
- 用原矩阵乘以主成分矩阵中的前部分特征信息较多的向量即可降维
scikit-learn
from sklearn.decomposition import PCA
pca = PCA(n_components=2) # 要转换成的维度
pca.fit(X_train)
#获得降维后的数据
X_train_reduction = pca.transform(X_train)
X_test_reduction = pca.transform(X_test)
#使用knn进行降维后数据评估
knn_clf = KNeighborsClassifier()
knn_clf.fit(X_train_reduction, y_train)
knn_clf.score(X_test_reduction, y_test)
PCA算法将原数据降到及维合适呢?
主成分解释方差,可以表示当前维度能表达原数据的特征的百分比
pca.explained_variance_ratio_
PCA提供了保留原特征概率的构造
pca = PCA(0.95)#会保留原来95%的特征的维度
pca.n_components#维度的数
网友评论