【机器学习】PCA主成分分析算法及python实现

  • 回归:产生连续结果,可用于预测
  • 分类:产生离散结果,可用于预测
  • 聚类:产生一组集合,用于降维

聚类分析: 是将一组研究对象分为相对同质的群组的统计分析技术,常用到的聚类分析有PCA主成分分析,K-means分析

PCA主成分分析

通过线型变换将原始数据变换为一组各维度线性无关的表示,用于提取数据的主要特征分量,高维数据的降维

主成分分析(Principal Components Analysis),简称PCA,是一种数据降维技术,用于数据预处理。一般我们获取的原始数据维度都很高,比如1000个特征,在这1000个特征中可能包含了很多无用的信息或者噪声,真正有用的特征才100个,那么我们可以运用PCA算法将1000个特征降到100个特征。这样不仅可以去除无用的噪声,还能减少很大的计算量。

PCA算法是如何实现的?

简单来说,就是将数据从原始的空间中转换到新的特征空间中,例如原始的空间是三维的(x,y,z),x、y、z分别是原始空间的三个基,我们可以通过某种方法,用新的坐标系(a,b,c)来表示原始的数据,那么a、b、c就是新的基,它们组成新的特征空间。在新的特征空间中,可能所有的数据在c上的投影都接近于0,即可以忽略,那么我们就可以直接用(a,b)来表示数据,这样数据就从三维的(x,y,z)降到了二维的(a,b)。

PCA算法的python实现

数据创建:产生一组二维的数据

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

# 数据创建
rng = np.random.RandomState(8)
data = np.dot(rng.rand(2,2),rng.randn(2,200)).T
df = pd.DataFrame({'X1':data[:,0],'X2':data[:,1]})

print(df.head())
print(df.shape)
plt.scatter(df['X1'],df['X2'],alpha = 0.8 ,marker = '.')
plt.axis('equal')
plt.grid()

【机器学习】PCA主成分分析算法及python实现

二维数据降维

from sklearn.decomposition import PCA

pca = PCA(n_components = 1)
pca.fit(df)
# n_components:降为一维
# copy:运行算法是是否将原始数组复制,默认为TRUE

print(pca.explained_variance_)
print(pca.components_)
print(pca.n_components_)

# 降维后主成分:a1 = 0.7788006 * X1 +  0.627271588 *X2
x_pca = pca.transform(df)#数据转换
x_new = pca.inverse_transform(x_pca) #降维后的数据转化为原始数据
print('orifinal shape:',df.shape)
print('transformed shape',x_pca.shape)
print(x_pca[:5])
print('--------------------')

plt.scatter(df['X1'],df['X2'],alpha = 0.8,marker = '.')
plt.scatter(x_new[:,0],x_new[:,1],alpha = 0.8,marker = '.',color = 'r')
plt.axis('equal')
plt.grid()

【机器学习】PCA主成分分析算法及python实现

红色数据为降维后的数据