《机器学习实战》PCA源码

本文深入探讨了《机器学习实战》中PCA(主成分分析)的实现过程,包括如何处理包含缺失值的数据,通过平均值填充等方法进行预处理,为机器学习模型提供有效的特征降维。
摘要由CSDN通过智能技术生成
#coding:utf-8

from numpy import *

"""
将数据转换成前N个主成分的伪代码如下:
    去除平均值
    计算协方差矩阵
    计算协方差矩阵的特征值和特征向量
    将特征值从大到小排序
    保留最上面的N个特征向量
    将数据转换到上述N个特征向量构建的新空间中
"""
def loadDataSet(filename,delim=' '):
    fr = open(filename)
    stringArr = [line.strip().split(delim) for line in fr.readlines()]
    dataArr = [list(map(float,line)) for line in stringArr]  #map()的结果是惰性的,必须加list使其返回list
    #print(shape(stringArr))
    #print(shape(dataArr))
    return mat(dataArr)


def pca(dataMat,topNfeat=99999): #topNfeat是应用的N个特征,也就是降到topNfeat维
    meanVals = mean(dataMat,axis=0)  #axis=0表示是对行压缩,即对列求平均,返回1*n的矩阵
    print(type(meanVals))
    meanRemoved = dataMat-meanVals
    covMat = cov(meanRemoved,rowvar=0)
    #如果`rowvar`为True(默认值),则每行代表一个变量,并在列中显示。 否则,转换关系:每列代表一个变量,在行中显示。
    pr
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值