摘要:本文主要向大家介绍了机器学习入门之【机器学习算法-python实现】PCA 主成分分析、降维,通过具体的内容向大家展现,希望对大家学习机器学习入门有所帮助。
本文主要向大家介绍了机器学习入门之【机器学习算法-python实现】PCA 主成分分析、降维,通过具体的内容向大家展现,希望对大家学习机器学习入门有所帮助。
1.背景 PCA(Principal Component Analysis),PAC的作用主要是减少数据集的维度,然后挑选出基本的特征。 PCA的主要思想是移动坐标轴,找到方差最大的方向上的特征值。什么叫方差最大的方向的特征值呢。就像下图中的曲线B。一样。它的覆盖范围最广。基本步骤:(1)首先计算数据集的协方差矩阵 (2)计算协方差矩阵的特征值和特征向量 (3)保留最重要的n个特征what is 协方差矩阵:定义是变量向量减去均值向量,然后乘以变量向量减去均值向量的转置再求均值。比如x是变量,μ是均值,协方差矩阵等于E[(x-μ)(x-μ)^t],物理意义是这种,比如x=(x1,x2,...,xi)那么协方差矩阵的第m行n列的数为xm与xn的协方差,若m=n。则是xn的方差。假设x的元素之间是独立的,那么协方差矩阵仅仅有对角线是有值,由于x独立的话对于m≠n的情况xm与xn的协方差为0。另外协方差矩阵是对称的。能够參考wiki:(//zh.wikipedia.org/wiki/%E5%8D%8F%E6%96%B9%E5%B7%AE%E7%9F%A9%E9%98%B5)2.代码实现伪代码例如以下(摘自机器学习实战):‘‘‘
@author: Garvin
‘‘‘
from numpy import *
import matplotlib.pyplot as plt
def loadDataSet(fileName, delim=‘\t‘):
fr = open(fileName)
stringArr = [line.strip().split(delim) for line in fr.readlines()]
datArr = [map(float,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
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, reconMat
def plotBestFit(dataSet1,dataSet2):
dataArr1 = array(dataSet1)
dataArr2 = array(dataSet2)
n = shape(dataArr1)[0]
n1=shape(dataArr2)[0]
xcord1 = []; ycord1 = []
xcord2 = []; ycord2 = []
xcord3=[];ycord3=[]
j=0
for i in range(n):
xcord1.append(dataArr1[i,0]); ycord1.append(dataArr1[i,1])
xcord2.append(dataArr2[i,0]); ycord2.append(dataArr2[i,1])
fig = plt.figure()
ax = fig.add_subplot(111)
ax.scatter(xcord1, ycord1, s=30, c=‘red‘, marker=‘s‘)
ax.scatter(xcord2, ycord2, s=30, c=‘green‘)
plt.xlabel(‘X1‘); plt.ylabel(‘X2‘);
plt.show()
if __name__==‘__main__‘:
mata=loadDataSet(‘/Users/hakuri/Desktop/testSet.txt‘)
a,b= pca(mata, 2)loadDataSet函数是导入数据集。PCA输入參数:參数一是输入的数据集。參数二是提取的维度。比方參数二设为1。那么就是返回了降到一维的矩阵。PCA返回參数:參数一指的是返回的低维矩阵。相应于输入參数二。參数二相应的是移动坐标轴后的矩阵。上一张图。绿色为原始数据。红色是提取的2维特征。
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标人工智能机器学习频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号