gpt4 book ai didi

matlab - 在 matlab 中创建簇

转载 作者:行者123 更新时间:2023-12-03 20:24:08 24 4
gpt4 key购买 nike

假设我在matlab中生成了一些数据如下:

n = 100;

x = randi(n,[n,1]);
y = rand(n,1);
data = [x y];

plot(x,y,'rx')
axis([0 100 0 1])
现在我想生成一个算法来将所有这些数据分类到一些集群(这是任意的)中,这样一个点只有在该点与集群中至少一个成员之间的距离为小于 10.How 生成代码?

最佳答案

您描述的聚类方法是 DBSCAN .请注意,此算法将仅在提供的数据中找到一个集群,因为数据集中不太可能存在与 的距离的点。全部 其他点是超过 10.
如果这真的是你想要的,你可以使用 ِ DBSCAN , 或 the one posted in FE ,如果您使用的版本早于 2019a。

% Generating random points, almost similar to the data provided by OP 
data = bsxfun(@times, rand(100, 2), [100 1]);
% Adding more random points
for i=1:5
mu = rand(1, 2)*100 -50;
A = rand(2)*5;
sigma = A*A'+eye(2)*(1+rand*2);%[1,1.5;1.5,3];
data = [data;mvnrnd(mu,sigma,20)];
end
% clustering using DBSCAN, with epsilon = 10, and min-points = 1 as
idx = DBSCAN(data, 10, 1);
% plotting clusters
numCluster = max(idx);
colors = lines(numCluster);
scatter(data(:, 1), data(:, 2), 30, colors(idx, :), 'filled')
title(['No. of Clusters: ' num2str(numCluster)])
axis equal
enter image description here
上图中的数字显示了任何两个不同集群中最近的点对之间的距离。

关于matlab - 在 matlab 中创建簇,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64622506/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com