zoukankan      html  css  js  c++  java
  • MATLAB实例:求相关系数、绘制热图并找到强相关对

    MATLAB实例:求相关系数、绘制热图并找到强相关对

    作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/

    用MATLAB编程,求给定数据不同维度之间的相关系数,并绘制热图,保存图片,找到强相关的维度对。

    数据集来自UCI中的wine:https://archive.ics.uci.edu/ml/datasets/Wine

    1. demo.m

    clear
    clc
    etea=0.8; %阈值
    % 加载数据
    data_load=dlmread('E:scanplotwine.data');
    data=data_load(:,2:14);
    [N, D]=size(data);
    % 求维度之间的相关系数
    rho = corr(data, 'type','pearson');
    % 绘制热图
    string_name={'Alcohol','Malic acid','Ash','Alcalinity of ash','Magnesium','Total phenols','Flavanoids','Nonflavanoid phenols','Proanthocyanins','Color intensity','Hue','Diluted wines','Proline'};
    xvalues = string_name;
    yvalues = string_name;
    h = heatmap(xvalues,yvalues,rho, 'FontSize',10, 'FontName','Times New Roman');
    h.Title = 'Correlation Coefficient';
    colormap(jet)
    saveas(gcf,sprintf('wine相关系数热图.jpg'),'bmp'); %保存图片
    % 绝对值
    rho=abs(rho);
    rho_1=rho.*tril(ones(D,D),-1); %下三角
    [row, col]=find(rho_1>etea); %找>etea的两个维度
    [Num, ~]=size(row);
    % A:存放相关系数>etea的两个维度及相关系数值
    A=zeros(Num, 3);
    for i=1:Num
        A(i,:)=[row(i), col(i), rho_1(row(i), col(i))];
        fprintf('强线性相关的两个维度是: 第%d个维度: %s与第%d个维度: %s, 两者的相关系数为:%f
    ', row(i), string_name{row(i)}, col(i), string_name{col(i)}, rho_1(row(i), col(i)));    
    end
    

    2. 结果

    >> demo
    强线性相关的两个维度是: 第7个维度: Flavanoids与第6个维度: Total phenols, 两者的相关系数为:0.864564

    MATLAB查看并设置当前颜色图:colormap

  • 相关阅读:
    asp.net 2.0教程 其它服务器控件
    asp.net 2.0教程 个性化用户配置
    asp.net 2.0教程 数据绑定控件
    asp.net 2.0教程 主题和皮肤
    asp.net 2.0教程 网站导航控件
    asp.net 2.0教程 数据缓存
    asp.net 2.0教程 数据源控件
    理解Windows会话
    SlickEdit 编辑器中的王者
    Mark Lucovsky NT内核作者之一
  • 原文地址:https://www.cnblogs.com/kailugaji/p/11891943.html
Copyright © 2011-2022 走看看