千家信息网

python中PCA的实例过程讲解

发表于:2025-01-22 作者:千家信息网编辑
千家信息网最后更新 2025年01月22日,这篇文章主要介绍"python中PCA的实例过程讲解",在日常操作中,相信很多人在python中PCA的实例过程讲解问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"pyt
千家信息网最后更新 2025年01月22日python中PCA的实例过程讲解

这篇文章主要介绍"python中PCA的实例过程讲解",在日常操作中,相信很多人在python中PCA的实例过程讲解问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"python中PCA的实例过程讲解"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

1、输入矩阵归一化处理。

2、计算样本协方差矩阵。

3、求解协方差矩阵指定的最大特征值对应特征向量。

4、确定转换矩阵,求解降维数据。

实例

#/usr/nom/env python# _*_coding:utf-8_*_# @Time      :2021/9/3 10:04# @Author    :A bigfish# @FileName  :maindemo13.py# @Software  :PyCharm import matplotlib.pyplot as pltimport numpy as npfrom pylab import * # 首先导入数据,此部分为从存储列表或单元中读取分析数据def loadDataSet(filename, delim='\t'):    #此处的'\t'表示不同变量间的分隔符,t表示tab键键入的空格    fr = open(filename)    stringArr = [line.strip().split(delim) for line in fr.readlines()]    dataArr = [list(map(float, line)) for line in stringArr]    return np.mat(dataArr)  # 定义pca分析函数def pca(dataset, topNfeat = 99999):        #topNfeat最大特征值数目,通常不用设置,因为后续要进行可视化分析                    meanVals = np.mean(dataset, axis=0)    #求均值    meanRemoved = dataset - meanVals       #预处理    covMat = np.cov(meanRemoved, rowvar=0) #求解输入数据协方差矩阵    eigVals, eigVects = np.linalg.eig(np.mat(covMat))    #求解特征值,特征向量    eigVaInd = np.argsort(eigVals)         #对特征值进行排序处理,默认为升序    eigVaInd = eigVaInd[-1:-(topNfeat):-1] #根据指定数目进行逆序处理    redEigVects = eigVects[:,eigVaInd]     #选取对应特征向量    lowDataMat = meanRemoved * redEigVects #数据降维X*P    recontMat = (lowDataMat * redEigVects.T) + meanVals #c处理进行了数据重构,非必须选项    return lowDataMat, recontMat, eigVals  #返回数据 # 定义特值值绘制函数def plotEig(dataset, numFeat=20):                mpl.rcParams['font.sans-serif'] = ['Times NewRoman']    sumData = np.zeros((1, numFeat))    dataset = dataset / sum(dataset)    for i in range(numFeat):        sumData[0, i] = sum(dataset[0:i])     X = np.linspace(1, numFeat, numFeat)    fig = plt.figure()    ax = fig.add_subplot(211)    ax.plot(X, (sumData*100).T, 'r-+')    mpl.rcParams['font.sans-serif'] = ['SimHei']    plt.ylabel('累计方差百分比')     ax2 = fig.add_subplot(212)    ax2.plot(X.T, (dataset[0:numFeat].T)*100, 'b-*')    plt.xlabel('主成分数')    plt.ylabel('方差百分比')    plt.show() # 定义原始数据及第一主成分绘制函数def plotData(OrigData, recData):    import matplotlib.pyplot as plt    fig = plt.figure()    ax = fig.add_subplot(111)    ax.scatter(OrigData[:,0].flatten().A[0], OrigData[:, 1].flatten().A[0], c='blue',marker='^', s=90)    ax.scatter(recData[:, 0].flatten().A[0], recData[:, 1].flatten().A[0], c='red', marker='o',s=90)plt.show()

到此,关于"python中PCA的实例过程讲解"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

0