%层次聚类算法,属无监督学习
%层次聚类算法是一种基于距离的聚类算法,它将数据集划分成一棵树形结构,每个节点代表一个簇,树的根节点代表整个数据集,叶子节点代表单个数据点。层次聚类算法的优点是不需要事先指定簇的个数,且可以通过树的结构来可视化数据集的聚类情况,但是它对于大规模数据集的计算时间较长,且对于噪声和异常值的处理较为困难。
% 假设你有 G/R 值作为特征值,以及对应的浓度标签
G_R_values = [3.559; 3.18575; 2.83503; 2.39247; 2.15932; 1.67284; 1.35375];
concentrations = [0; 40; 80; 120; 160; 200; 240];
% 使用层次聚类算法
tree = linkage(G_R_values, 'average');
clusters = cluster(tree, 'maxclust', 2); % 设置聚类簇的数量为 2
% 绘制数据点和聚类结果
figure;
gscatter(concentrations, G_R_values, clusters, 'rb', 'o+');
xlabel('Concentration (μmol/L)');
ylabel('G/R Value');
title('Hierarchical Clustering');
legend('Cluster 1', 'Cluster 2');
% 创建六面体箱线图
figure;
boxplot(G_R_values, clusters, 'Colors', 'rb');
xlabel('Cluster');
ylabel('G/R Value');
title('Boxplot of G/R Values by Cluster');
% 绘制树状图
figure;
dendrogram(tree);
title('Dendrogram');
% 计算在240μM内输出为0和1的百分比
cluster_1_count = sum(clusters == 1);
cluster_2_count = sum(clusters == 2);
total_count = length(clusters);
percentage_1 = cluster_1_count / total_count * 100;
percentage_2 = cluster_2_count / total_count * 100;
% 绘制环图
figure;
labels = {'Output 1', 'Output 0'};
values = [percentage_1, percentage_2];
pie3(values, labels);
title('Ratio of Output 0 and 1 for Concentration 120μmol/L');
% 输出环图中0和1的具体百分比
disp(['Percentage of Output 0: ', num2str(percentage_1), '%']);
disp(['Percentage of Output 1: ', num2str(percentage_2), '%']);
% 调整聚类结果为 0 和 1
clusters = clusters - 1;
% 命令行窗口输出不同 G/R 输出是 1 还是 0 的结果
disp('G/R Outputs:');
for i = 1:length(clusters)
if clusters(i) == 0
output = '1';
else
output = '0';
end
disp(['Concentration: ', num2str(concentrations(i)), ', G/R Value: ', num2str(G_R_values(i)), ', Output: ', output]);
end
% 假设您有一个未知浓度的 G/R 值
unknown_gr_value = 2.2;
% 在树状图上标记未知浓度的位置
hold on;
plot(length(clusters) + 1, unknown_gr_value, 'r*'); % 假设未知浓度在最后一个位置
hold off;
% 判断未知浓度所属的簇
threshold = (G_R_values(2) + G_R_values(3)) / 2; % 取相邻0和1所对应的G/R值的平均值作为阈值
disp(['Threshold: ', num2str(threshold)]);
if unknown_gr_value < threshold
disp('Unknown concentration belongs to Cluster 1.');
else
disp('Unknown concentration belongs to Cluster 2.');
end
适合于荧光探针的算法,金属有机框架等均适用matlab代码.zip
版权申诉
46 浏览量
2024-03-18
16:21:29
上传
评论
收藏 2KB ZIP 举报
Matlab科研辅导帮
- 粉丝: 1w+
- 资源: 7553
最新资源
- 基于Java的在线教育平台设计源码
- 升降压斩波电路电路图,buck-boost电路图
- Python 程序语言设计模式思路-结构型模式:组合模式:将对象组合成树形结构
- 毕业设计基于python矩阵分解的推荐算法研究源码+详细文档+全部数据资料 高分项目.zip
- 基于网络的入侵检测系统源码+数据集+详细文档(高分毕业设计).zip
- 微信小程序源码 旅行故事分享 - 面包旅行App界面设计与文本展示资源下载
- 微信小程序源码 创意互动游戏 - 你画我猜App下载
- 摸底考试_学生版20230305.py
- 课程设计基于FPGA数字钟课程设计源码+课设报告(95分以上).zip
- 基于Java的企业家申报系统设计源码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈