✅作者简介:热爱科研的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.