PCA主成分python(代码详细备注)(三)

PCA算法+python实现(法一)步步详细解析

###(法一)步步详细解析 +(法二)scikit-learn快速实现

方法1. 编程一步一步实现

Software version: Python 2.7.12 |Anaconda 4.2.0 (64-bit)|

####我们以定义函数的形式来一步一步进行

1.1 导入模块:Numpy,Pandas

# -*- coding: utf-8 -*-
# @Time    : 2017/8/17 14:20
# @Author  : LinYimeng
# @Site    : 
# @File    : PCA.py
# @Software: PyCharm Community Edition
import numpy as np
import pandas as pd
df1 = pd.DataFrame({
   'x1':np.random.randn(8),'x2':np.random.randn(8),'x3':np.random.randn(8),'x4':np.random.randn(8)})

1.2 z-score 标准化

  零均值化 :第一步.求每一列的平均值和标准差,第二步,该列上新数据=(原数据-均值)/标准差。

  python备注: DataFrame和Series之间的算术运算会将Series的索引匹配到DataFrame的列,然后沿着行一直向下运算(广播)。

def standardization(dataX):
###pca程序1 ,准备程序
    meanVal=dataX.mean(axis=0)        ###我们的数据变量按列进行排列(即一行为一个样本),按列求均值,即求各个特征的均值
    #meanVal = np.mean(dataX, axis=0) ###此同为np的方法,得到Series
    stdVal=dataX.std(axis=0)
    datasTad =(dataX-meanVal)/stdVal
    return datasTad

1.3 pca主体部分,(为便于理解首先逐步编写,最后定义函数合并)

1.3.1 求相关系数或者协方差矩阵

  PCA可以根据相关系数矩阵,也可以根据协方差矩阵进行计算。经标准化的样本数据的协方差矩阵就是原始样本数据的相关矩阵。

  python备注:DataFrame的corr和cov方法将以DataFrame 的形式反悔完整的相关系数或协方差矩阵。

# dataCov = datasTad.cov()

## dataCorr = datasTad.corr()
1.3.2 求特征值、特征矩阵

  python备注:numpy.linalg函数中的eig函数(参数类型为array),可以直接由covMat求得特征值和特征向量。

# newData1 = np.array(dataCov)
# eigenValue, eigenVector = np.linalg.eig(newData1)
# print eigenValue,eigenVector

特征值和特征向量是一一对应的.eg
[ 2.28755238 1.19050837 0.00740526 0.51453398]

[[-0.35550858 -0.75662146 0.49766033 0.23123975]
[ 0.41457366 -0.5522369 -0.22386014 -0.68778611]
[-0.53285545 0.2980044 0.39214938 -0.68809688]
[-0.64638023 -0.18371651 -0.74056715 -0.00106679]]

1.3.3 保留特征值比较大的前n个主成分

python备注: np.argsort函数返回的是数组值从小到大的索引值

# sorceEigenValue = np.argsort(eigenValue))
# pcaEigenValue = sorceEigenValue[-n]
# pcaEigenVector = eigenVector[pcaEigenValue]
# print sorceEigenValue
1.3.4 将1.3.1-1.3.4步骤写入pca定义函数

给定要选取的主成份个数 n .

def pcan(dataX
  • 10
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
### 回答1: 以下是Python中使用Scikit-learn库进行PCA成分分析的代码: ```python from sklearn.decomposition import PCA import numpy as np # 创建数据集 X = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # 创建PCA对象 pca = PCA(n_components=2) # 应用PCA X_pca = pca.fit_transform(X) # 输出结果 print(X_pca) ``` 在这个例子中,我们创建了一个3x3的矩阵作为数据集,然后使用PCA对象将其转换为一个2维的数据集,最后输出结果。在这个过程中,我们使用了Scikit-learn库中的PCA类。我们设置n_components参数为2,这意味着我们想将原始数据集转换为一个2维的数据集。PCA类的fit_transform方法用于应用PCA转换。最后,我们输出了转换后的数据集。 ### 回答2: PCA(Principal Component Analysis,成分分析)是一种常用的降维技术,它通常用于对高维数据进行分析和可视化。下面是一个使用Python实现PCA的简单示例代码: 首先,我们需要导入所需的库:numpy、pandas和sklearn。 ```python import numpy as np import pandas as pd from sklearn.decomposition import PCA ``` 假设我们有一个包含10个样本和5个特征的数据集,我们可以通过以下方式创建一个DataFrame对象: ```python data = np.random.rand(10, 5) df = pd.DataFrame(data, columns=['feature1', 'feature2', 'feature3', 'feature4', 'feature5']) ``` 接下来,我们可以使用PCA进行成分分析。首先,我们需要实例化一个PCA对象,并指定我们希望保留的成分数量。在这个例子中,假设我们希望保留2个成分。 ```python pca = PCA(n_components=2) ``` 然后,我们可以使用fit_transform()方法对数据进行降维,并将结果保存在一个新的DataFrame中。 ```python pca_data = pca.fit_transform(df) pca_df = pd.DataFrame(pca_data, columns=['PC1', 'PC2']) ``` 最后,我们可以查看降维后的数据集。 ```python print(pca_df) ``` 这个代码示例展示了如何使用Python中的sklearn库进行PCA成分分析。请注意,PCA还有其他参数和功能,你可以根据实际需求进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值