【529】MT | 相关算法
Apriori 算法
- 参考:B站视频讲解
- 参考:文本讲解-刘建平
- 参考:文本讲解-简书
- 参考:【十大经典数据挖掘算法】系列之 Apriori 算法
Geohash 算法
- 参考:Geohash算法原理及实现
- 参考:Geohash精度和原理
- 参考:GeoHash核心原理解析
- geohash9: 大约 4m * 4m 的网格
- Geohash8: 大约 17m * 17m 的网格
DBSCAN 算法
- 通过计算空间密度聚类,去除掉噪声
- 空间邻域就是指距离中心点一定范围内的点的集合
- ϵ:邻域半径,内部为考虑范围
- MinPts:最少的点的个数,阈值
- 参考:密度聚类之DBSCAN及Python实现
- 参考:DBSCAN密度聚类算法-刘建平
- 参考:用 scikit-learn 学习 DBSCAN 聚类
利用大圆距离计算,需要构建大圆距离矩阵:
参考:DBSCAN for clustering of geographic location data
参考:官方示例 - Demo of DBSCAN clustering algorithm
- 结果中为 -1 的点就被认为是噪声点,其他点则为聚类的点
- 如果只有 -1,说明所有的点都比较离散
- 如果只有 0,说明这些点很聚集
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | from math import radians, cos, sin, asin, sqrt def geodistance(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 # 构建距离矩阵 # 每个点之间的 great_circle 距离 def get_distance_matrix_from_array(points_array): num = len (points_array) distance_matrix = np.zeros((num, num)) for i in range (num): for j in range (num): if i = = j: continue lng1, lat1 = points_array[i] lng2, lat2 = points_array[j] dis = geodistance(lng1, lat1, lng2, lat2) distance_matrix[i][j] = dis return distance_matrix from sklearn.cluster import DBSCAN distance_matrix = get_distance_matrix_from_array(coords) clusters = DBSCAN(eps = 2 , min_samples = 2 , metric = 'precomputed' ).fit_predict(distance_matrix) |
Isolation Forest - 孤立森林
- 将数据按照超平面进行切割,越容易切割出来的点,就越可能是异常点,从而来查找异常值
- 参考:浅谈孤立森林算法
- 参考:【异常检测】孤立森林(Isolation Forest)
R Tree 算法
- 参考:什么是R树? - 七月在线 七仔的文章 - 知乎 https://zhuanlan.zhihu.com/p/62639268
- 参考:一文详解:什么是B树?
- 参考:知道什么是B树,那你知道什么是R树吗?
OPTICS 聚类算法
层次聚类(Hierarchical Clustering)算法
HDBSCAN 算法
- 参考:【Python】hdbscan安装失败的解决
- 安装 anaconda,建议通过 清华镜像 安装
- 安装后可以安装很多 Python 的工具
- 重新打开终端,直接可以使用 conda 命令
- 然后按照参考里面的命令输入即可,conda install hdbscan 成功
convexHull,计算凸包
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | # -*- coding: utf-8 -*- import matplotlib.pyplot as plt import numpy as np from scipy.spatial import ConvexHull ##########scipy 凸包################ points = np.random.rand( 30 , 2 ) hull = ConvexHull(points) plt.plot(points[:, 0 ], points[:, 1 ], 'o' ) # hull.vertices 得到凸轮廓坐标的索引值,逆时针画 hull1 = hull.vertices.tolist() #要闭合必须再回到起点[0] hull1.append(hull1[ 0 ]) plt.plot(points[hull1, 0 ], points[hull1, 1 ], 'r--^' ,lw = 2 ) for i in range ( len (hull1) - 1 ): plt.text(points[hull1[i], 0 ], points[hull1[i], 1 ], str (i),fontsize = 20 ) # 得到外边缘线的索引值 hull.vertices.tolist() # 索引值需要回到第一个值,然后将其收尾相连 # 如果是绘制polygon的话,则不需要 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
2013-03-07 【104】公司 or 事业单位