python主成分分析实战案例

PCA主成分分析主要用于数据降维。由一系列特征组成的多维向量,其中某些元素本身没有区分性,或者彼此区分不大。此时,如果用它做特征区分,相似元素贡献会比较少。我们目的是找到那些变化大的元素,即方差较大的维,去除那些变化不大的维度。

具体理论参考:http://www.ams.org/samplings/feature-column/fcarc-svd


案例示例:

#-*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
import mlpy
np.random.seed(0)  #seed()用于指定随机数生成时所用算法开始的整数值。
mean, cov, n = [0, 0], [[1,1],[1,1.5]], 100     #设置多元随机数生成的均值,协方差矩阵,生成点个数
x = np.random.multivariate_normal(mean, cov, n) #随机数生成
'''
x值
[[-0.2314987   0.08387106]
 [ 0.66963671  1.38535319]
 [ 0.97355908  0.04134561]
 [ 0.38108224  0.9434845 ]
 [ 0.11467758 -0.72613803]]
'''
pca = mlpy.PCA()#定义算法训练器pca
pca.learn(x)    #给pca算法输入值,训练模型
coeff = pca.coeff()#获取模型训练结果的参数
'''
coef系数值
[[-0.6165097  -0.78734731]
 [-0.78734731  0.6165097 ]]
'''

fig = plt.figure(1) #创建figure对象fig
plot1 = plt.plot(x[:, 0], x[:, 1], 'o') #x[:, 0]相当于x,x[:, 1]相当于y 'o'为绘制散点图
plot2 = plt.plot([0,coeff[0, 0]], [0, coeff[1, 0]], linewidth=4, color='r')#主成分分量1,标红线
plot3 = plt.plot([0,coeff[0, 1]], [0, coeff[1, 1]], linewidth=4, color='g') #主成分分量2,标绿线
xx = plt.xlim(-4, 4)
yy = plt.ylim(-4, 4)
z = pca.transform(x, k=1) #设置主成分的个数
xnew = pca.transform_inv(z) 
fig2 = plt.figure(2)#创建figure对象fig2
plot1 = plt.plot(xnew[:, 0], xnew[:, 1], 'o')
xx = plt.xlim(-4, 4)
yy = plt.ylim(-4, 4)
plt.show()#会同时显示2个图



效果图

python主成分分析实战案例_第1张图片



你可能感兴趣的:(data,mining/machine,learning)