博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据降维
阅读量:6590 次
发布时间:2019-06-24

本文共 1357 字,大约阅读时间需要 4 分钟。

数据降维

分类

  • PCA(主成分分析降维)
  • 相关系数降维

PCA 降维(不常用)

实现思路

  • 对数据进行标准化
  • 计算出数据的相关系数矩阵(是方阵, 维度是nxn, n是特征的数量)
  • 计算出相关系数矩阵的特征值和特征向量(虽然这里说的是向量, 但是是矩阵, 这个矩阵的每一列都是特征值或者特征向量, 是nxn), 特征值是每一个特征的特征值的集合, 但是在特征向量是每一个特征的特征向量的集合, 前者我们提到的特征值和特征向量是集合
  • 多特征值进行降序排序
  • 根据已经得到的特征值计算出贡献率和累计贡献率(主要看累计贡献率, 单单一个贡献率指的是一个主成分保存的原始特征的信息, 累计贡献率是总共保存的原始特征信息)
  • 设置信息阈值T, 一般设置为0.9, 如果大于T, 则记录下来当前的位置k(k也就是我们选择的主成分的个数, 主成分就是特征, 也就是一列)
  • 根据k选择主成分对应的特征向量
  • 将标准化之后的数据(矩阵)右乘在上一步中选择出来的特征向量(在这一步得到的矩阵就是m x new_n维度的了), 得到的就是主成分的分数, 也就是降维之后的数据集合

伪代码

X = load('data.xlsx', 'B1:I11');m = size(X, 1); % m 表示样本的数量n = size(X, 2); % n 表示特征的数量% 数据标准化for i = 1:m    SX(:, i) = (X(:, i) - mean(X(:, i))) / std(X(:, i));end% 计算相关系数CM = corrcoef(SX);% V 是特征向量, D 是特征值[V D] = eig(CM);% 对D特征值进行降序排序, 将结果保存到DS的第一列for i = 1:n    DS(:, 1) = D(n + 1 - i, n + 1 - i);end% 计算贡献率和累计贡献率for i = 1:n    % 第二列为当前单个, 每一个, 主成分的贡献率    DS(:, 2) = D(i, 1) / sum(D(:, 1));    % 第三列为到当前主成分的累计贡献率    DS(:, 3) = sum(D(1:i, 1)) / sum(D(:, 1));end% 选择主成分T = 0.9;for i = 1:n    if DS(:, i) > T        k = i;        break;    endend% 获取主成分对应的特征向量for i = 1:n    PV(:, i) = DS(:, n + 1 - i);end% 获取新的特征样本X_new = SX * PV;

相关系数降维

  • 公式: \[r=\sum_{j=1}^{m}{
    {(x_{j}-\overline{x_{j}})({y_{j}-\overline{y_{j}}})}\over{std(x_{j})std(y_{j})}}\]
  • 如果|r|在[0.7, 1]时表示强线性关系, 说明x和y有很紧密的线性关系
  • 如果|r|在[0.5, 0.7]时表示中线性关系
  • 如果|r|在[0.2, 0.5]时表示低线性关系
  • 如果|r|在[0, 0.2]时表示没有关系
  • r > 0表示正相关, r < 0表示负关系

转载地址:http://yuuio.baihongyu.com/

你可能感兴趣的文章
正确计算linux系统内存使用率
查看>>
关于MapReduce单词统计的例子:
查看>>
【php】利用php的构造函数与析构函数编写Mysql数据库查询类 (转)
查看>>
导出DLLRegisterServer接口遇到的问题
查看>>
压缩算法
查看>>
ios和android的发展前景比较
查看>>
mysql排序关于英文字母abcd..xyz排序。
查看>>
[转载]SpringMVC的Model参数绑定方式
查看>>
Linux socket多进程服务器框架三
查看>>
Debug.print的用法
查看>>
常用名词
查看>>
计算机硬件常识
查看>>
第一百三十四节,JavaScript,封装库--遮罩锁屏
查看>>
【转】cookie如何共享到各个浏览器
查看>>
自制基于HMM的python中文分词器
查看>>
如何在Root的手机上开启ViewServer,使得HierachyViewer能够连接
查看>>
重写和重载
查看>>
RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2-新增锁定用户与解除锁定用户的功能...
查看>>
vue1.0 的过滤器
查看>>
如何删除anaconda
查看>>