【聚类】基于PCA+kmeans实现数据聚类附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法       神经网络预测       雷达通信       无线传感器        电力系统

信号处理              图像处理               路径规划       元胞自动机        无人机 

⛄ 内容介绍

将基于PCA-Kmeans++的多属性融合聚类技术应用于沁水盆地南部3#煤层的储层预测中,对融合聚类属性进行分析,确定有利储层分布.首先提取常规的叠后地震属性,叠后波阻抗反演以及叠前AVO属性;然后利用PCA主成分分析方法,得到贡献率最大的几个主成分分量;最后通过Kmeans++无监督机器学习算法对主成分分量进行融合和聚类.实际资料应用结果表明,PCA-Kmeans++方法可以融合各个属性的特征,能够更加清晰地反映地质异常体的分布特征,为沁水盆地南部煤层气及类似储层的预测提供了一种可行的方法.

⛄ 代码

clc;

clear all;

close all;

filename = 'data.xlsx';

sheet = 2;

X = xlsread(filename,sheet);

%% PCA主成分分析

meanX = ones(size(X,1),1) * mean(X); %中心化处理

centredX = X - meanX;

C = cov(centredX); %计算协方差矩阵

[W,Lambda] = eig(C); %W是特征向量组成的矩阵,Lambda是特征值组成的对角矩阵

ev = (diag(Lambda))'; %提取特征值

ev = ev(:,end:-1:1); %eig计算出的特征值是升序的,这里手动倒序(W同理)

W = W(:,end:-1:1);

Wr = W(:,1:10); %提取前N个主成分的特征向量

Tr = centredX * Wr; %新坐标空间的数据点

%% 开始聚类

cluster_num = 3;

[index_cluster,cluster] = kmeans(Tr,cluster_num);

%% 画出聚类效果

figure(1)

a = unique(index_cluster);

C = cell(1,length(a));

for i = 1:length(a)

   C(1,i) = {find(index_cluster==a(i))};

end

for j = 1:cluster_num

    data_get = Tr(C{1,j},:);

    scatter(data_get(:,1),data_get(:,2),100,'filled','MarkerFaceAlpha',.6,'MarkerEdgeAlpha',.9);

    hold on

end

%绘制聚类中心

plot(cluster(:,1),cluster(:,2),'ks','LineWidth',2);

hold on

title_str = ['Kmeans聚类','  聚类数为:',num2str(cluster_num)];

title(title_str)

⛄ 运行结果

⛄ 参考文献

[1] 谢玮, 毕臣臣, 刘学清,等. 基于PCA-Kmeans++的煤层气多属性融合聚类分析方 法研究[J]. 煤炭技术, 2019(5):4.

[2] 毕臣臣, 谢玮, 王彦春,等. 基于PCA-Kmeans++的煤层气多属性融合聚类分析方法研究[C]// 2018年中国地球科学联合学术年会. 2018.

[3] 钟穗希, 李子波, 唐荣年. 基于PCA-Kmeans聚类法的橡胶树叶片氮含量的近红外高光谱诊断模型研究[J]. 海南大学学报:自然科学版, 2020, 38(3):10.

[4] 王侠林, 贺建峰. 基于K-Means聚类的微生物群落结构研究[J]. 软件导刊, 2018, 17(1):4.

⛳️ 代码获取关注我

❤️部分理论引用网络文献,若有侵权联系博主删除

❤️ 关注我领取海量matlab电子书和数学建模资料

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Matlab科研辅导帮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值