数据降维_数据降维的目的

数据降维_数据降维的目的数据降维分类+PCA(主成分分析降维)+相关系数降维PCA降维(不常用)实现思路+对数据进行标准化+计算出数据的相关系数矩阵(是方阵,维度是nxn,n是特征的数量)

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

数据降维

分类

  • 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:n
    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;
    end
end

% 获取主成分对应的特征向量
for i = 1:k
    PV(:, i) = V(:, 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表示负关系
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/167593.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 51单片机按键控制步进电机加减速及正反转

    51单片机按键控制步进电机加减速及正反转之前尝试用单片机控制42步进电机正反转,电机连接导轨实现滑台前进后退,在这里分享一下测试程序及接线图,程序部分参考网上找到的,已经实际测试过,可以实现控制功能。所用硬件:步进电机及驱动器、STC89C52单片机、直流电源1、硬件连接图注意:上图为共阳极接法,实际连接参考总体线路连接。 驱动器信号端定义:PUL+:脉冲信号输入正。(C…

  • maven学习系列——(七)Dependency

    Dependency介绍本文转自:Maven简介(六)——Dependency,并加上自己在实际使用中的总结和说明!1、依赖的传递性依赖传递对版本的选择假设A依赖于B和C,然后B依赖于D,D又依赖于E1.0,C直接依赖于E2.0,那么这个时候A依赖的是E1.0还是E2.0,还是这两个都依赖呢?两个都依赖是肯定不行的,因为它们可能会有冲突的地方。这个时候就涉及到Maven中依赖传递对…

  • 程序员表白代码vbs(自己一个人无聊的说说)

    一款无聊的VisualBasicScript表白程序罢了

  • 登陆网站时验证码有什么作用

    登陆网站时验证码有什么作用没有验证码登陆,黑客会更加容易激活成功教程你的账号,通过组合码刷机等黑客技术来破取你的密码,有了验证码相当于加了一层很厚的屏障,安全系数很高。  验证码是一种区分用户是计算机和人的公共全自动程序。  验证码作用:可以防止恶意激活成功教程密码、刷票、论坛灌水,有效防止某个黑客对某一个特定注册用户用特定程序暴力激活成功教程方式进行不断的登陆尝试,实际上是用验证码是现在很多网站通行的方式(比如招商银行的网上个人银行,百度社…

  • 【MySQL】使用Visio绘制数据库关系模型图

    【MySQL】使用Visio绘制数据库关系模型图使用Visio绘制数据库关系模型图1新建项目文件—新建–软件和数据库—数据库模型图点击后,出现如下界面:2绘制左侧“实体关系”中将“实体”形状拖放到绘制界面,如下图3编辑实体名称,如下图:4编辑列点击“列”如下图:完成实体:客人信息表GuestRecord,如下截图完成实体:客房表Room(同上操作),如下图5关系绑定5.1添加列RoomID到客人信息表5.2将“实体关系”中的关系工具拖放到某个实体上(鼠标不松开),直到该实体边框变红色,松开;箭头指

  • c ringbuffer 源码_ringbuffer.c

    c ringbuffer 源码_ringbuffer.c#include#include#include#include#include”ringbuffer.h”/*createanewringbuffer*@capacitymaxbuffersizeoftheringbuffer*@returntheaddressofthenewringbuffer,NULLforerror.*/RING_BUF…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号