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:\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. 結果

>> demo
強線性相關的兩個維度是: 第7個維度: Flavanoids與第6個維度: Total phenols, 兩者的相關系數為:0.864564

MATLAB查看並設置當前顏色圖:colormap


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM