注释:由于各方面原因,理论部分不做介绍,网上很多自行百度吧!


pca.py

 import numpy as np
import matplotlib.pyplot as plt
import math def loadDataSet(filename, delin = '\t'):
fr = open(filename)
#读取分割存入数组
stringArr = [line.strip().split(delin) for line in fr.readlines()]
dataArr = [list(map(float,line)) for line in stringArr]
return np.mat(dataArr)
def pca(dataMat, topNfeet = 9999999):
meanVals = np.mean(dataMat,axis=0)#求取平均值
meanRemoved = dataMat - meanVals
covMat = np.cov(meanRemoved,rowvar=0)#方差
eigVals, eigVects= np.linalg.eig(np.mat(covMat))#求解特征向量和特征值
eigValInd = np.argsort(eigVals)#对特征值进行排序
eigValInd = eigValInd[:-(topNfeet+1):-1]#最后的-1是防止越界的,当然你可以在前面加一个判断
redEigVects = eigVects[:,eigValInd]
lowDDataMat = meanRemoved*redEigVects #
reconMat = (lowDDataMat * redEigVects.T) + meanVals
return lowDDataMat, reconMat

main.py

 import PCA
import matplotlib.pyplot as plt if __name__ == "__main__": dataMat = PCA.loadDataSet('testSet.txt')
lowDMat, reconMat = PCA.pca(dataMat,1)
fig = plt.figure()
ax = fig.add_subplot(111)
ax.scatter(dataMat[:,0].flatten().A[0],dataMat[:,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()

对丢失的值进行替代:

 #零的数据都转化为平均值
def replaceNanWithMean():
dataMat = loadDataSet('secom.data',' ')
numFeat = dataMat.shape[1]
for i in range(numFeat):
meanVal = np.mean(dataMat[np.nonzero(~np.isnan(dataMat[:,i].A))[0],i])
dataMat[np.nonzero(np.isnan(dataMat[:,i].A))[0],i] = meanVal
return dataMat

《机器学习实战》PCA降维的更多相关文章

  1. [综] PCA降维

    http://blog.json.tw/using-matlab-implementing-pca-dimension-reduction 設有m筆資料, 每筆資料皆為n維, 如此可將他們視為一個mx ...

  2. 机器学习公开课笔记(8):k-means聚类和PCA降维

    K-Means算法 非监督式学习对一组无标签的数据试图发现其内在的结构,主要用途包括: 市场划分(Market Segmentation) 社交网络分析(Social Network Analysis ...

  3. Python机器学习笔记 使用scikit-learn工具进行PCA降维

    之前总结过关于PCA的知识:深入学习主成分分析(PCA)算法原理.这里打算再写一篇笔记,总结一下如何使用scikit-learn工具来进行PCA降维. 在数据处理中,经常会遇到特征维度比样本数量多得多 ...

  4. PCA降维—降维后样本维度大小

    之前对PCA的原理挺熟悉,但一直没有真正使用过.最近在做降维,实际用到了PCA方法对样本特征进行降维,但在实践过程中遇到了降维后样本维数大小限制问题. MATLAB自带PCA函数:[coeff, sc ...

  5. 一步步教你轻松学主成分分析PCA降维算法

    一步步教你轻松学主成分分析PCA降维算法 (白宁超 2018年10月22日10:14:18) 摘要:主成分分析(英语:Principal components analysis,PCA)是一种分析.简 ...

  6. 【资料收集】PCA降维

    重点整理: PCA(Principal Components Analysis)即主成分分析,是图像处理中经常用到的降维方法 1.原始数据: 假定数据是二维的 x=[2.5, 0.5, 2.2, 1. ...

  7. 第四章 PCA降维

    目录 1. PCA降维 PCA:主成分分析(Principe conponents Analysis) 2. 维度的概念 一般认为时间的一维,而空间的维度,众说纷纭.霍金认为空间是10维的. 3. 为 ...

  8. PCA 降维算法详解 以及代码示例

    转载地址:http://blog.csdn.net/watkinsong/article/details/38536463 1. 前言 PCA : principal component analys ...

  9. [学习笔记] numpy次成分分析和PCA降维

    存个代码,以后参考. numpy次成分分析和PCA降维 SVD分解做次成分分析 原图: 次成分复原图: 代码: import numpy as np from numpy import linalg ...

  10. 关于PCA降维中遇到的python问题小结

    由于论文需要,开始逐渐的学习CNN关于文本抽取的问题,由于语言功底不好,所以在学习中难免会有很多函数不会用的情况..... ̄へ ̄ 主要是我自己的原因,但是我更多的把语言当成是一个工具,需要的时候查找就 ...

随机推荐

  1. NET设计模式 第二部分 结构性模式(9):装饰模式(Decorator Pattern)

    装饰模式(Decorator Pattern) ——.NET设计模式系列之十 Terrylee,2006年3月 概述 在软件系统中,有时候我们会使用继承来扩展对象的功能,但是由于继承为类型引入的静态特 ...

  2. HanLP分词命名实体提取详解

    HanLP分词命名实体提取详解   分享一篇大神的关于hanlp分词命名实体提取的经验文章,文章中分享的内容略有一段时间(使用的hanlp版本比较老),最新一版的hanlp已经出来了,也可以去看看新版 ...

  3. Spring Cloud(Dalston.SR5)--Eureka 常用配置

    配置参数 默认值 说明 服务注册中心配置 Bean类:org.springframework.cloud.netflix.eureka.server.EurekaServerConfigBean eu ...

  4. 用swoole实现mysql的连接池--摘自https://github.com/153734009/doc/blob/master/php/mysql_pool.php

    <?php   $serv = new swoole_server("0.0.0.0", 9508);   $serv->set(['worker_num'=>1 ...

  5. JavaScript学习总结(二、隐式类型转换、eval())

    一.(避免)隐式类型转换 console.log(false == 0);   //logs true; console.log(false === 0);   //logs false; conso ...

  6. js 实现滚动字幕

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. Azure ARM (18) 将Azure RM Manage Disk托管磁盘的Image,跨订阅迁移

    <Windows Azure Platform 系列文章目录> 先挖一个坑,以后再埋. 最近遇到一个客户需求,客户使用了Azure RM Manage Disk托管磁盘,然后捕获镜像做成了 ...

  8. 使用apache设置绑定多个域名或网站

    来源:百度知道  http://jingyan.baidu.com/article/363872ecec3e496e4ba16fdc.html 配置完成后可能是能访问了,但是跳转的路径总是不对,这时候 ...

  9. RedirectStandardOutput

    当Process将文本写入其标准流,通常在控制台上显示文本. 通过设置RedirectStandardOutput到true重定向StandardOutput流,可以操作或取消进程的输出. 例如,可以 ...

  10. BlueZone automation note1

    To run the patch test cases in C:\sliData\TAF\bzw\test-packs\run_jobs via run_example_tests_smoke_te ...