【ML--06】主成分分析PCA

一、什么是主成分?
主成分分析(Principal Component Analysis, PCA)在做的事情:找到原始变量的线性组合,也就是所谓的主成分,使得组合后得到变量的方差最大化。

二、主成分分析与因子分析有什么区别?
因子分析是把变量表示成各公因子的线性组合;
主成分分析中则是把主成分表示成各变量的线性组合。

sklearn 实现PCA

# coding=utf-8
import sys
reload(sys)
sys.setdefaultencoding('utf-8')


import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
# %matplotlib inline
from sklearn.datasets.samples_generator import make_blobs


# X为样本特征,Y为样本簇类别, 共1000个样本,每个样本3个特征,共4个簇
X, y = make_blobs(n_samples=10000, n_features=3, centers=[[3,3, 3], [0,0,0], [1,1,1], [2,2,2]], cluster_std=[0.2, 0.1, 0.2, 0.2],
                  random_state =9)


########################不降维#####################################################
from sklearn.decomposition import PCA
pca = PCA(n_components=3)
pca.fit(X)
print pca.explained_variance_ratio_
print pca.explained_variance_


#######################降维###############################################
############################### 现在我们来进行降维,从三维降到2维#########

pca = PCA(n_components=2)
pca.fit(X)
print pca.explained_variance_ratio_
print pca.explained_variance_

# X_new = pca.transform(X)
# plt.scatter(X_new[:, 0], X_new[:, 1],marker='o')
# plt.show()


# 现在我们看看不直接指定降维的维度,而指定降维后的主成分方差和比例。


pca = PCA(n_components=0.95)
pca.fit(X)
print pca.explained_variance_ratio_
print pca.explained_variance_
print pca.n_components_


pca = PCA(n_components=0.99)
pca.fit(X)
print pca.explained_variance_ratio_
print pca.explained_variance_
print pca.n_components_

# 这个结果也很好理解,因为我们第一个主成分占了98.3%的方差比例,第二个主成分占了0.8%的方差比例,两者一起可以满足我们的阈值。

# 最后我们看看让MLE算法自己选择降维维度的效果,代码如下
pca = PCA(n_components='mle')
pca.fit(X)
print pca.explained_variance_ratio_
print pca.explained_variance_
print pca.n_components_























已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页