聚类Clustering方法定位船舶站点

这篇具有很好参考价值的文章主要介绍了聚类Clustering方法定位船舶站点。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景

现有船舶的航线中采样的数据库,采样的总时长为3个月,仅采样航速静止(小于1节)的数据,关键有效数据主要有经纬度/实时吃水量。

思路

基于站点附近轮船有停靠且航行速度慢,故取样点多的基础认识,计划使用聚类方法定位LNG站点位置,并基于船舶吃水量的变化判断站点的属性:进口/出口/停泊。

Step 1: 数据预处理

基于原始数据文件中的关键数据,分别对应经度(long)、纬度(lati)、吃水量(draft)。数据中相邻若干行两两之间若基于经纬度计算得到的距离小于5千米,则将这些数据视为同一个坐标点,位置信息存在取样误差,位置信息(经度、维度)取均值得到;若相邻行计算距离大于5km,则两个数据视为不同的有效坐标点。至此,位置信息处理完毕,后续基于吃水量变化情况判断船只行为。如果吃水量变大,则船只货物增多,标记为1,表示进站;反之如果吃水量减小,则船只货物减少,标记为-1,表示出站;若吃水量不变,则船只货物不变,标记为0,即船只正常航行或停泊。本段具体代码如下所示,

for i in range(len(df)):  

    cur_pt = [df.loc[i, attr] for attr in attr_list]

    # 5000m / 5km
    if haversine_distance(cur_pt,temp_pt) < 5: # not include into data, the position of adjacent line (in df) is so close, that regard it as the same position
        avg_pt[0] += cur_pt[0]
        avg_pt[1] += cur_pt[1]
        if cur_pt[2] != 0: # draft != 0 
            draft_valid.append(cur_pt[2])
        temp_pt = cur_pt
        count += 1
    else: # include into data
        if count != 0:
            data['long'].append(avg_pt[0] / count)
            data['lati'].append(avg_pt[1] / count)
            if len(draft_valid)>0:
                dif = draft_valid[-1]-draft_valid[0]
                if(dif>1): 
                    data['behavior'].append(1) # more carriage, 1 
                elif(dif<-1):
                    data['behavior'].append(-1) # less carriage, -1
                else:
                    data['behavior'].append(0) # carriage unchanged 
            else:
                data['behavior'].append(0)
        count = 0
        avg_pt = [0,0]
        temp_pt = cur_pt
        draft_valid = []

可视化结果如下所示,

聚类Clustering方法定位船舶站点

Step 2: 聚类算法

在得到航迹中不同坐标的行为之后,计划采用聚类方法计算LNG站点位置。下面简要介绍各个算法的细节以及参数设置。

算法1:DBSCAN

DBSCAN定义的簇可以是任意形状,每个簇由一组彼此接近的核心样本组成。簇之外是一组与核心样本接近的非核心样本。定义核心样本的方式是数据集中一个样本的eps距离范围内,存在min_samples 个其他样本。任何不是核心样本并且和任意一个核心样本距离都大于eps 的样本将被视为异常值。min_samples取值越高或eps取值越低都表示形成簇的密度越高。

times = []
for i in range(10): # Simulate for 10 times, and calculate the average run time  
    start_time = time.time()
    # Model Training 
    clustering_dbscan = DBSCAN(eps=0.05, min_samples=3).fit(coord) 
    run_time = time.time() - start_time # Unit: s 
    times.append(run_time)
dic = results_process(clustering_dbscan, data, "DBSCAN", results_folder)
print("\nDBSCAN, which costs {:.4f} seconds (in average) for model fitting.".format(sum(times)/len(times)))
print("Amount of Stations / Central Points in clustering = ", len(set(clustering_dbscan.labels_)) - (1 if -1 in clustering_dbscan.labels_ else 0))
print("In detail,")
print("\tAmount of LNG import stations = ", len(dic["import"]))
print("\tAmount of LNG export stations = ", len(dic["export"]))
print("\tAmount of mooring stations = ", len(dic["mooring"]))

算法2:OPTICS

OPTICS算法是DBSCAN算法的推广,基本思路一致,主要变化是将eps从取值放宽至某个范围。因为OPTICS的eps为一个范围,所以计算拟合数据的时间远超DBSCAN算法。

算法3:AGNES

AGNES属于层次聚类方法,采用自底向上的策略,最初将每个对象作为一个簇,然后簇根据准则逐步合并,两个簇间的距离由两个簇中距离最短的数据点的相似度确定,合并过程不断反复进行直到所有对象满足簇数目n_clusters。结合本例实际,n_clusters设为650,探索不同数目的LNG站点分布,并兼顾模型性能。

聚类定位LNG站点的实验结果如下所示, 包含DBSCAN、OPTICS、AGNES三种聚类算法拟合数据效率、LNG站点的各项统计数据

聚类Clustering方法定位船舶站点

基于AGNES聚类算法得到的LNG站点的可视化结果和json存档文件(部分)如下所示,

聚类Clustering方法定位船舶站点

 聚类Clustering方法定位船舶站点

 后续工作

后续可以基于现有库定位站点的所属国家或地区。

 联系我们

Email: oceannedlg@outlook.com 

聚类Clustering方法定位船舶站点文章来源地址https://www.toymoban.com/news/detail-498434.html

到了这里,关于聚类Clustering方法定位船舶站点的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 常见聚类算法及使用--层次聚类(Agglomerative clustering)

    前言 层次聚类顾名思义就是按照某个层次对样本集进行聚类操作,这里的层次实际上指的就是某种距离定义。 层次聚类最终的目的是消减类别的数量,所以在行为上类似于树状图由叶节点逐步向根节点靠近的过程,这种行为过程又被称为“自底向上”。 更通俗的,层次聚类

    2024年01月16日
    浏览(28)
  • 聚类算法(Clustering)原理深入解析与应用

    聚类算法是无监督学习中常用的技术,用于将数据集中的对象分成不同的组或簇,使得组内的对象相似度较高,而组间的对象相似度较低。本文将详细解析聚类算法的原理,从距离度量到簇划分准则,全面理解聚类算法的工作原理和应用。 聚类算法是一种无监督学习算法,通

    2024年02月09日
    浏览(32)
  • 【聚类算法】密度峰值聚类算法DPC(Density Peak Clustering Algorithm)

    every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?type=blog 密度峰值聚类算法(Density Peak Clustering Algorithm),能够自动发现数据中的密度峰值点,并根据峰值点将数据进行聚类,该算法由Alex Rodriguez和Alessandro Laio于2014年提出。发表science https://www.science.org

    2024年02月15日
    浏览(29)
  • 图论中的聚类系数(Clustering coefficient)简单介绍

    在GraphSage论文的理论分析部分,涉及到一个概念叫做“ Clustering coefficient” ,直译过来就是 聚类系数 ,解释为“节点的一跳邻域内封闭的三角形的比例”,本文对其做一个简单的介绍。本文参考了 Wiki百科-Clustering coefficient。 更:关于GraphSage论文详解,请参见博文《GraphSag

    2023年04月09日
    浏览(20)
  • 吴恩达机器学习笔记:第 8 周-13 聚类(Clustering)13.1-13.2

    在这个视频中,我将开始介绍聚类算法。这将是一个激动人心的时刻,因为这是我们学习的第一个非监督学习算法。我们将要让计算机学习无标签数据,而不是此前的标签数据。 那么,什么是非监督学习呢?在课程的一开始,我曾简单地介绍过非监督学习,然而,我们还是有

    2024年04月22日
    浏览(38)
  • 密度峰值聚类算法DPC(Density Peak Clustering)理论基础与python实现

    基于密度峰值的聚类算法全称为基于快速搜索和发现密度峰值的聚类算法(clustering by fast search and find of density peaks, DPC)。它是2014年在Science上提出的聚类算法,该算法能够自动地发现簇中心,实现任意形状数据的高效聚类。 密度峰值聚类算法是对K-Means算法的一种改进,回顾K

    2024年02月16日
    浏览(24)
  • 论文阅读1--A Survey on Incomplete Multi-view Clustering(不完全多视图聚类的调查)阅读笔记

    目录 写在前面(知识补充) 0.Abstract 1.Introduction 2. FUNDAMENTALS AND PRELIMINARY CONCEPTS 3. MATRIX FACTORIZATION BASED IMC(基于矩阵分解的IMC) 4. KERNEL LEARNING BASED IMC(基于内核学习的IMC) 5.GRAPH LEARNING BASED IMC(基于图学习的IMC) 6.DEEP LEARNING BASED IMC(基于深度学习的IMC) 7. EXPERIMENTS(实验部分)

    2024年02月05日
    浏览(42)
  • 【人工智能】— 无监督学习、K-means聚类(K-means clustering)、K-means损失函数,目标函数

    无监督学习是指在没有标签的数据上进行学习,即没有监督信号的指导下进行模型训练。在无监督学习中,我们主要关注从无标签数据中学习出数据的低维结构和隐藏的模式。 通过无标签数据,我们可以预测以下内容: 低维结构:通过无监督学习算法如主成分分析(PCA),

    2024年02月10日
    浏览(32)
  • 最新版付费进群系统源码 /同城定位付费进群源码 /自带定位完整版/后台分销站点

    源码介绍: 最新版付费进群系统源码 ,它是同城定位付费进群源码,而且自带定位完整版和后台分销站点。 看到有些人分享一些虚假的内容或者缺少文件的内容。现在分享完整给大家,功能是完整的。它是同城定位付费进群源码。 功能:新建分销会员,设置账号密码,收款

    2024年01月22日
    浏览(32)
  • Android Studio导入现有项目的方法

    今年因为搞了四个电脑放在不同地点,经常遇到在新电脑上装了Android Studio之后需要导入现有项目的情况,有时挺顺利,有时又很麻烦,遇到各种问题导致无法build. 不过也有一些规律,总结一下怎样做才能顺利导入: 错误的做法 从其他电脑上把项目目录拷贝过来,在AS中进行

    2024年02月03日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包