学习笔记二、调用聚类算法包实现层次

一、应用场景:实现把距离相对更近的样本聚为一类。

二、输入样本格式:不对样本对应经纬度。(经纬度为十进制)

三、实现过程:

1)、计算两样本间距离(使用公式为:haversine公式)

计算公式:

python实现代码:

from math import radians,cos,sin,asin,sqrt

def haversine(lon1, lat1, lon2, lat2):  # 经度1,纬度1,经度2,纬度2 (十进制度数)
    """
    Calculate the great circle distance between two points on the earth (specified in decimal degrees)
    计算两十进制经纬度之间的距离
    """
    # 将十进制度数转化为弧度
    lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2])

    # haversine公式
    dlon = lon2 - lon1
    dlat = lat2 - lat1
    a = sin(dlat / 2) ** 2 + cos(lat1) * cos(lat2) * sin(dlon / 2) ** 2
    c = 2 * asin(sqrt(a))
    r = 6371  # 地球平均半径,单位为公里
    return c * r * 1000

2)、通过层次聚类算法对不同样本进行聚类

掉用了Python包:scipy.cluster.hierarchy

Python代码实现:

import scipy.cluster.hierarchy as sch
#进行层次聚类:
Z=sch.linkage(dist,method='average')
#根据多大的距离进行分类
cluster= sch.fcluster(Z, t=500,criterion='distance')
   >、dist:为两两样本间的距离,例如有3个样本,则顺序为(d12,d13,d23)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值