凯鲁嘎吉
用书写铭记日常,最迷人的不在远方
posts - 292,comments - 409,views - 138万
回到顶部(go to top)

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

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

用MATLAB编程,求给定数据不同维度之间的相关系数,并绘制热图,保存图片,找到强相关的维度对。第3部分还给定相关系数,并自己DIY热力图颜色,给出实例。

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

1. demo.m

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
clear
clc
etea=0.8; %阈值
% 加载数据
data_load=dlmread('E:\scanplot\wine.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\n', row(i), string_name{row(i)}, col(i), string_name{col(i)}, rho_1(row(i), col(i)));   
end

2. 结果

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

3. 给定相关系数并自定义热力图颜色

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
% 自己给定相关系数,自己定义热力图颜色
% 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/
clear
clc
figure(1)
rho=[1.00   0.16    0.29    0.05    0.34    0.41    0.29    0.22    0.25    0.56    0.37    0.19    0.44
0.16    1.00    0.44    0.29    0.13    0.12    0.19    0.01    0.26    0.07    0.00    0.22    0.05
0.29    0.44    1.00    0.08    0.32    0.35    0.36    0.20    0.02    0.27    0.28    0.44    0.52
0.05    0.29    0.08    1.00    0.21    0.20    0.26    0.24    0.20    0.06    0.07    0.39    0.21
0.34    0.13    0.32    0.21    1.00    0.86    0.45    0.61    0.06    0.43    0.70    0.50    0.72
0.41    0.12    0.35    0.20    0.86    1.00    0.54    0.65    0.17    0.54    0.79    0.49    0.85
0.29    0.19    0.36    0.26    0.45    0.54    1.00    0.37    0.14    0.26    0.50    0.31    0.49
0.22    0.01    0.20    0.24    0.61    0.65    0.37    1.00    0.03    0.30    0.52    0.33    0.50
0.25    0.26    0.02    0.20    0.06    0.17    0.14    0.03    1.00    0.52    0.43    0.32    0.27
0.56    0.07    0.27    0.06    0.43    0.54    0.26    0.30    0.52    1.00    0.57    0.24    0.62
0.37    0.00    0.28    0.07    0.70    0.79    0.50    0.52    0.43    0.57    1.00    0.31    0.79
0.19    0.22    0.44    0.39    0.50    0.49    0.31    0.33    0.32    0.24    0.31    1.00    0.63
0.44    0.05    0.52    0.21    0.72    0.85    0.49    0.50    0.27    0.62    0.79    0.63    1.00
]; %自己给定相关系数
% 绘制热图
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;
h1 = heatmap(xvalues,yvalues, rho, 'FontSize',10, 'FontName','Times New Roman');
h1.Title = 'Correlation Coefficient';
% h1.ColorbarVisible = 'off';
map = [1 1 1; 1 1 0; 0.5 1 0.4; 0.2 0.85 0.2; 0.4 0.7 1; 0.2 0.5 0.8]; % 自己定义颜色
colormap(map)
% saveas(gcf,sprintf('wine相关系数热图_自定义.jpg'),'bmp'); %保存图片

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

posted on   凯鲁嘎吉  阅读(33694)  评论(5编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决
历史上的今天:
2016-11-19 多态动手动脑

点击右上角即可分享
微信分享提示