博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python PCA主成分分析进行降维度
阅读量:4211 次
发布时间:2019-05-26

本文共 1757 字,大约阅读时间需要 5 分钟。

#PCA对数据进行降维from numpy import *def confloat(x):    r=[float(i) for i in x]    return rdef loadDataSet(fileName, delim='\t'):    fr = open(fileName)    stringArr = [line.strip().split(delim) for line in fr.readlines()]    datArr = [confloat(line) for line in stringArr]    return mat(datArr)def pca(dataMat, topNfeat=9999999):    #计算平均值    meanVals = mean(dataMat, axis=0)    #去平均值    meanRemoved = dataMat - meanVals #remove mean    #计算协方差矩阵    covMat = cov(meanRemoved, rowvar=0)    #计算特征值和特征向量    eigVals,eigVects = linalg.eig(mat(covMat))    #对特征值进行排序,从小到大排序    eigValInd = argsort(eigVals)            #sort, sort goes smallest to largest    #获得最大的topFeat 特征值    eigValInd = eigValInd[:-(topNfeat+1):-1]  #cut off unwanted dimensions    #获取对应的特征向量    redEigVects = eigVects[:,eigValInd]       #reorganize eig vects largest to smallest    #将数据转换到新的特征空间    lowDDataMat = meanRemoved * redEigVects#transform data into new dimensions    reconMat = (lowDDataMat * redEigVects.T) + meanVals    return lowDDataMat, reconMatdef replaceNanWithMean():    datMat = loadDataSet('secom.data', ' ')    numFeat = shape(datMat)[1]    for i in range(numFeat):        meanVal = mean(datMat[nonzero(~isnan(datMat[:,i].A))[0],i]) #values that are not NaN (a number)        datMat[nonzero(isnan(datMat[:,i].A))[0],i] = meanVal  #set NaN values to mean    return datMatdatMat=loadDataSet('testSet.txt')lowDataMat,reconMat=pca(datMat,2)print(lowDataMat)#将降维后的数据和原始数据一起绘制出来import  matplotlibimport matplotlib.pyplot as pltfig=plt.figure()ax=fig.add_subplot(111)ax.scatter(datMat[:,0].flatten().A[0],datMat[:,1].flatten().A[0],marker='^',s=90)ax.scatter(reconMat[:,0].flatten().A[0],reconMat[:,1].flatten().A[0],marker='o',s=50,c='red')plt.show()#print(datMat[:,0].flatten().A[0])

转载地址:http://bwwmi.baihongyu.com/

你可能感兴趣的文章
OpenGL学习二十九:模板缓冲区与模板测试
查看>>
OpenGL学习三十:深度缓冲区与掩码
查看>>
OpenGL学习三十一:累积缓冲区
查看>>
OpenGL学习三十二:二次几何体
查看>>
OpenGL学习三十三:球面映射
查看>>
OpenGL学习三十四:剪裁区域和TGA图像文件的加载
查看>>
OpenGL学习三十五:加载压缩TGA
查看>>
OpenGL学习三十六:Windows 2D字体
查看>>
OpenGL学习三十七:Windows 3D字体
查看>>
OpenGL学习三十八:图片文字
查看>>
OpenGL学习三十九:飘动的旗帜
查看>>
OpenGL学习四十:正玄移动
查看>>
OpenGL环境搭建
查看>>
QT&&QT_Creator_安装配置流程
查看>>
QT 自定义控件
查看>>
Matrix学习——基础知识
查看>>
Android矩阵原理详解(Matrix,ColorMatrix)
查看>>
WINCE的体系结构
查看>>
OpenGL与DirectX 比较
查看>>
应用文件映射进行进程间通讯
查看>>