(MATLAB代码) 船舶轨迹聚类:K-means 算法(260912)

1. 算法识别

这段 MATLAB 代码使用的是 K-means 聚类算法 。代码中通过 kmeans(coords, numClusters) 函数对船舶 AIS 轨迹的经纬度坐标进行聚类,将轨迹点划分为 200 个簇。

2. 核心代码解析

以下是代码中与 K-means 聚类相关的关键部分:

matlab 复制代码
% 使用K-means进行聚类
numClusters = 200;  % 设定聚类的簇数,需要根据数据情况调整
% 提取经纬度点
coords = [CF.Lon, CF.Lat];
% 使用K-means算法进行聚类
[idx, C] = kmeans(coords, numClusters);

其中:

  • numClusters = 200:指定聚类簇数为 200。
  • coords = [CF.Lon, CF.Lat]:提取所有轨迹点的经纬度作为聚类输入特征。
  • [idx, C] = kmeans(coords, numClusters):执行 K-means 聚类,返回每个点的簇标签 idx 和簇中心坐标 C

3. K-means 算法原理

K-means 是一种基于划分的经典无监督聚类算法,其核心思想是将 n 个样本划分为 k 个簇,使得簇内样本之间的相似度最高、簇间相似度最低。算法步骤如下:

  1. 初始化:随机选择 k 个样本作为初始簇中心。
  2. 分配:计算每个样本到各簇中心的距离(通常为欧氏距离),将其分配到最近的簇。
  3. 更新:重新计算每个簇的质心(即簇内所有样本的均值),作为新的簇中心。
  4. 迭代:重复步骤 2 和 3,直到簇中心不再变化或达到最大迭代次数。

4. 聚类结果可视化

代码中通过以下方式展示聚类结果:

matlab 复制代码
% 为每个簇分配不同的颜色
clusterColors = lines(numClusters);
% 绘制聚类结果
figure; geoaxes; hold on;
for k = 1:numClusters
    cluster = coords(idx == k, :);
    if ~isempty(cluster)
        geoscatter(cluster(:, 2), cluster(:, 1), 0.5, ...
            'MarkerEdgeColor', clusterColors(k, :), ...
            'MarkerFaceColor', clusterColors(k, :));
    end
end
% 绘制聚类中心点
geoscatter(C(:, 2), C(:, 1), 8, 'r*', 'LineWidth', 2);
title('K-means Clustered Ship Trajectories');
geobasemap topographic;

每个簇使用不同颜色绘制轨迹点,红色星号标记簇中心位置,便于观察船舶轨迹的空间聚集特征。

5. 聚类结果保存

聚类完成后,代码将结果保存为 CSV 文件:

matlab 复制代码
% 保存聚类结果和聚类中心点
CF.Cluster = idx;
writetable(CF, fullfile(outpath, 'AIS_kmeans_clustered.csv'));
C_table = array2table(C, 'VariableNames', {'Lon', 'Lat'});
writetable(C_table, fullfile(outpath, 'Cluster_Centers.csv'));
  • AIS_kmeans_clustered.csv:包含原始轨迹数据及每个点所属的簇标签。
  • Cluster_Centers.csv:保存 200 个簇中心的经纬度坐标。

6. 总结

该代码使用 K-means 聚类算法对船舶 AIS 轨迹点进行空间聚类分析,通过设定 200 个簇将轨迹点按地理位置分组,并在地图上可视化聚类结果和簇中心,适用于分析船舶活动密集区域和典型航线模式。

6.1数据

6.2代码数据路径

7所有代码获取

(MATLAB代码) 船舶轨迹聚类:K-means 算法(260912)https://mbd.pub/o/bread/mbd-YZaVlJ5qag==

相关推荐
wzdark7 小时前
基于堆的优先队列实现原理与复杂度分析4
算法
老王熬夜敲代码9 小时前
BLAKE3:最快的密码学哈希函数
算法·密码学·哈希算法
hansang_IR9 小时前
【题解】P4460 [CQOI2018] 解锁屏幕
c++·算法
见闻小天地9 小时前
简博斯JG-C系列彩色激光同轴位移计:摄像头模组对位与行程测量的技术价值观察
人工智能·算法
matlab代码10 小时前
基于matlab数字图像处理的指纹识别系统【源码68期】
开发语言·matlab
葫三生10 小时前
《论三生原理》神话学构想与“神话历史”理论、《古史中的神话》思路异同?
大数据·人工智能·科技·深度学习·算法
matlab代码10 小时前
基于matlab的水果识别系统(苹果香蕉菠萝梨桃子)【源码65期】
开发语言·matlab
liliangcsdn10 小时前
因子分析指标概念与示例
算法·机器学习
SupL!11 小时前
LoftQ原理
算法