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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 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 多态动手动脑