PCA算法代码

本文介绍了如何使用Python的机器学习库进行主成分分析(PCA),对'chr1.txt'数据集进行特征降维,并通过Matplotlib展示原始数据和降维后的数据重构。重点展示了PCA在数据压缩和可视化中的应用。
摘要由CSDN通过智能技术生成

来源机器学习实战

from numpy import *
import numpy as np
import matplotlib
import matplotlib.pyplot as plt

def loadDataSet(fileName,delim='\t'):
    fr = open(fileName)
    stringArr = [line.strip().split(delim) for line in fr.readlines()]
    datArr = [list(map(float,line) )for line in stringArr]
    return mat(datArr)

def pca(dataMat,topNfeat=9999999):
    #去平均值
    meanVals = mean(dataMat, axis=0)
    meanRemoved = dataMat - meanVals
    covMat = cov(meanRemoved,rowvar=0)
    eigVals,eigVects = linalg.eig(mat(covMat))
    eigValInd = argsort(eigVals)
    #从小到大对N个值排序
    eigValInd = eigValInd[:-(topNfeat+1):-1]
    redEigVects = eigVects[:,eigValInd]
    #将数据转换到新空间
    lowDDataMat = meanRemoved * redEigVects
    reconMat = (lowDDataMat * redEigVects.T) + meanVals
    return lowDDataMat,reconMat

dataMat = loadDataSet('chr1.txt')
lowDMat,reconMat = pca(dataMat,1)
print(shape(lowDMat))
print(reconMat)
fig = plt.figure()
ax = fig.add_subplot(111)
ax.scatter(dataMat[:,0].flatten().A[0],dataMat[:,0].flatten().A[0],marker='s',s=90)
ax.scatter(reconMat[:,0].flatten().A[0],reconMat[:,0].flatten().A[0],marker='o',s=50,c='red')
plt.show()
# <matplotlib.collections.PathCollection object at 0X029B5C50>

运行结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值