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

简介: 【聚类】基于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电子书和数学建模资料



相关文章
|
1天前
|
数据采集 算法 数据可视化
MATLAB、R用改进Fuzzy C-means模糊C均值聚类算法的微博用户特征调研数据聚类研究
MATLAB、R用改进Fuzzy C-means模糊C均值聚类算法的微博用户特征调研数据聚类研究
|
5天前
|
机器学习/深度学习 传感器 数据可视化
MATLAB用深度学习长短期记忆 (LSTM) 神经网络对智能手机传感器时间序列数据进行分类
MATLAB用深度学习长短期记忆 (LSTM) 神经网络对智能手机传感器时间序列数据进行分类
21 1
MATLAB用深度学习长短期记忆 (LSTM) 神经网络对智能手机传感器时间序列数据进行分类
|
11天前
|
机器学习/深度学习 数据可视化 网络架构
matlab使用长短期记忆(LSTM)神经网络对序列数据进行分类
matlab使用长短期记忆(LSTM)神经网络对序列数据进行分类
15 0
|
11天前
|
数据可视化
matlab用高斯曲线拟合模型分析疫情数据
matlab用高斯曲线拟合模型分析疫情数据
14 0
|
20天前
|
存储 人工智能 机器人
【Matlab】Matlab电话拨号音合成与识别(代码+论文)【独一无二】
【Matlab】Matlab电话拨号音合成与识别(代码+论文)【独一无二】
|
1月前
|
索引
matlab快速入门(读取数据并绘制散点图和拉格朗日插值
matlab快速入门(读取数据并绘制散点图和拉格朗日插值
32 0
|
2月前
|
机器学习/深度学习 算法 计算机视觉
霍夫变换车道线识别-车牌字符识别代码(matlab仿真与图像处理系列第5期)
霍夫变换车道线识别-车牌字符识别代码(matlab仿真与图像处理系列第5期)
30 2
|
2月前
|
算法
MATLAB | 插值算法 | 一维interpl插值法 | 附数据和出图代码 | 直接上手
MATLAB | 插值算法 | 一维interpl插值法 | 附数据和出图代码 | 直接上手
40 0
|
3月前
|
Perl
【MFAC】基于全格式动态线性化的无模型自适应控制(Matlab代码)
【MFAC】基于全格式动态线性化的无模型自适应控制(Matlab代码)
|
3月前
【数值分析】迭代法求方程的根(附matlab代码)
【数值分析】迭代法求方程的根(附matlab代码)

热门文章

最新文章