机器学习-python编写主成分分析(PCA)数据降维
来源:互联网 发布:无人机自动降落算法 编辑:程序博客网 时间:2024/06/11 03:46
代码及数据集下载:PCA
在机器学习之前通常需要对数据进行降维处理,有以下原因:
- 使得数据集更易使用
- 降低很多算法的计算开销
- 去除噪声
- 使得结果易懂
这里讲的降维方法为主成分分析法(PCA),将数据从原来的坐标系转换到新的坐标系,新的坐标系的选择是由数据本身决定的。第一个坐标轴选择的是原始数据中方差最大的方向,第二个新最标轴的选择和第一个坐标轴正交且具有最大方差的方向。该过程一直重复,重复次数为想要保留原始数据特征的数目。我们会发现,大部分方差都包含在最前面的几个新的坐标轴中,因此我们忽略余下的方差小的最标轴。方差越大代表该特征包含的信息越多,代表数据的差异。PCA中假设数据是不相关的。
PCA的原理及流程如下:
- 假设变换后的坐标系为
- m个数据集为
- 对m个数据的每个特征进行中心化,使得
- 数据的协方差矩阵为
- 选取方差最大方向等价于选取协方差矩阵最大的特征值及其特征向量。取协方差矩阵前
- 将特征向量排序后组成
降维后的维数
1. 由用户事先指定
2. 通过在
3. 从重构的角度设置一个重构阈值,例如
伪代码:
输入:样本集
输出:投影矩阵
过程:
1.对样本进行中心化
2.计算协方差矩阵
3.对协方差矩阵进行特征值分解
4.取最大的
python代码为
import numpy as npimport matplotlib.pyplot as pltdef loadData(filename,delim = '\t'): with open(filename) as fr: stringArr = [line.strip().split(delim) for line in fr.readlines()] dataArr = [list(map(float,line)) for line in stringArr] return np.mat(dataArr)def pca(dataSet,topNfeat = 99999999): dataMean = np.mean(dataSet,axis = 0) meanRemoved = dataSet - dataMean covMat = np.cov(meanRemoved,rowvar=0) eigVals,eigVec = np.linalg.eig(np.mat(covMat)) eigValInd = np.argsort(eigVals) eigValInd = eigValInd[:-(topNfeat+1):-1] redEigVects = eigVec[:,eigValInd] lowDDataMat = meanRemoved * np.mat(redEigVects) reconMat = lowDDataMat * redEigVects.T + dataMean return lowDDataMat,reconMatdata = loadData('testSet.txt')lowdata,recondta = pca(data,1)fig = plt.figure(0)ax = fig.add_subplot(111)ax.scatter(data[:,0],data[:,1],s=90,marker='^',c='r')ax.scatter(recondta[:,0],recondta[:,1],s=30,marker='o',c='b')plt.show()
- 机器学习-python编写主成分分析(PCA)数据降维
- PYTHON机器学习实战——PCA主成分分析 数据降维
- 机器学习---降维之PCA主成分分析法
- 机器学习_用PCA主成分分析给数据降维
- 【机器学习系列】python版PCA(主成分分析)
- 【机器学习算法-python实现】PCA 主成分分析、降维
- 【机器学习】主成分分析PCA
- 【机器学习】主成分分析PCA
- 【机器学习】主成分(PCA)算法分析
- 机器学习降维算法一:PCA(主成分分析算法)
- 机器学习之降维算法2-主成分分析(PCA)
- 机器学习降维算法一:PCA(主成分分析算法)
- 机器学习降维算法一:PCA(主成分分析算法)
- 【机器学习】Sklearn库主成分分析PCA降维的运用实战
- 【机器学习算法实现】主成分分析(PCA)——基于python+numpy
- 【机器学习算法实现】主成分分析(PCA)——基于python+numpy
- 【机器学习算法实现】主成分分析(PCA)——基于python+numpy
- 机器学习算法笔记系列之深入理解主成分分析PCA-Python实现篇
- android stuido的aar文件怎么使用
- 名片管理系统 以下代码个人原创,在需要说明的地方我在后面加了注释,当然我的代码是希望给大家一个思想,还有很多很多不足之处,希望大佬们发现后私信我哦,咱们一起探讨(嘻嘻,说得有点小装逼呀,其实是老师发
- 欧几里得几何(3)Gamma
- 搭建Linux的Ubuntu环境
- 区间DP
- 机器学习-python编写主成分分析(PCA)数据降维
- fiddler手机抓包 iOS iPhone 设置方法
- java--水仙花数
- sql语句
- 关于Promise.then()的思考
- 2.jquery选择器
- (实用)导出word里面生成excel
- easyui combobox 制作带有复选框的下拉菜单
- java异常概述