为啥要选数学专业啊 2023-05-09 23:38 采纳率: 0%
浏览 10
已结题

AGENS算法实现经纬度

k-means算法,dbscan算法,AGENS算法三种算法实现经纬度

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-05-10 08:56
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:
    • 文章:聚类分析(K-means 层次聚类和基于密度DBSCAN算法三种实现方式) 中也许有你想要的答案,请看下吧
    • 除此之外, 这篇博客: k-means算法(DBSCAN算法),聚类算法中的 一、K-means算法是最经典的聚类算法(无监督学习), 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

          本文对scikit-learn中的kmeans进行说明,以便以后使用。

      首先:k-means算法的优劣如下

      优势简单,快速,适合常规数据集

      劣势:K值难确定,复杂度与样本呈线性关系,很难发现任意形状的簇(针对凸数据集效果较好:

      在欧氏空间中,凸集是对于集合内的每一对点,连接该对点的直线段上的每个点也在该集合内。凹集则不满足

       要使用kmeans算法的话,首先需要进行import:

          from sklearn.cluster import KMeans

          scikit-learn中,通过KMeans进行对象的新建,并传入算法参数进行参数设置


          KMeans传参详解:

          1、n_clusters : k值,聚类中心数量(开始时需要产生的聚类中心数量),默认为8

          2、max_iter : 算法运行的最大迭代次数,默认300,凸数据集不用管这个数,凹数据集需要指定。

          3、tol: 容忍的最小误差,当误差小于tol就会退出迭代(算法中会依赖数据本身),默认为1e-4

          4、n_init : (用不同的初始化之心运行计算的次数)k-means算法会随机运行n_init次,最终的结果将是最好的一个聚类结果,默认10

          5、init : 即初始值(质心)选择的方式,有三个选择{


      优化过的'k-means++',  ,一般默认'k-means++' ,

      完全随机选择'random': 随机选择k个实例作为聚类中心

      自己指定的初始化质心,ndarray:如果传入为矩阵(ndarray),则将该矩阵中的每一行作为聚类中心

      初始化过程如下:

      从输入的数据点集合(要求有k个聚类)中随机选择一个点作为第一个聚类中心;(2)、对于数据集中的每一个点x,计算它与最近聚类中心(指已选择的聚类中心)的距离D(x);(3)、选择一个新的数据点作为新的聚类中心,选择的原则是:D(x)较大的点,被选取作为聚类中心的概率较大;(4)、重复2和3直到k个聚类中心被选出来


          6、algorithm :可选的K-means距离计算算法, 可选{"auto", "full" or "elkan",default="auto"}


              "full":传统的距离计算方式.,支持稀疏数据。

             "elkan":使用三角不等式,效率更高,但是目前不支持稀疏数据。1、计算任意两个聚类中心的距离;2当计算x点应该属于哪个聚类中心时,当发现2*S(x,K1)<S(x,K2)时,根据三角不等式,S(x,K2)>S(x,K1),

             "auto":当为稀疏矩阵时,采用full,否则elkan。


          7、precompute_distances : 是否将数据全部放入内存计算,可选{'auto', True, False},开启时速度更快但是更耗内存.


             'auto' : 当n_samples * n_clusters > 12million,不放入内存,否则放入内存,double精度下大概要多用100M的内存

             True : 进行预计算

            False : 不进行预计算


          8、n_jobs : 同时进行计算的核数(并发数),n_jobs用于并行计算每个n_init,如果设置为-1,使用所有CPU,若果设置为1,不并行,也可以自定义个数

          9、random_state : 用于随机产生中心的随机序列,指定确切的数字后,可以让每次运行程序,产生的结果都一样

          10、verbose : 是否输出详细信息,默认为0,值越大,细节打印越多。


             ● int:冗长度★ 0:不输出训练过程● 1:偶尔输出● >1:对每个子模型都输出


          11、copy_x : 是否直接在原矩阵上进行计算。默认为True,会copy一份进行计算。


          新建对象后,常用的方法包括fit、predict、cluster_centers_和labels。fit(X)函数对数据X进行聚类,使用predict方法进行新数据类别的预测使用cluster_centers_获取聚类中心使用labels_获取训练数据所属的类别inertia_获取每个点到聚类中心的距离和

      一维数据的聚类:

      参考链接
      from sklearn.cluster import KMeans
      import numpy as np
      x = np.random.random(10000)
      y = x.reshape(-1,1)
      km = KMeans()
      km.fit(y)
      km.cluster_centers_

      核心的操作是y = x.reshape(-1,1),含义为将一维数据变成只有1列,行数不知道多少(-1代表根据剩下的维度计算出数组的另外一个shape属性值)。

      多维数据聚类样例:


      import pandas as pd
      
      from sklearn.cluster import KMeans

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 9月2日
  • 创建了问题 5月9日

悬赏问题

  • ¥15 求京东批量付款能替代天诚
  • ¥15 slaris 系统断电后,重新开机后一直自动重启
  • ¥15 51寻迹小车定点寻迹
  • ¥15 谁能帮我看看这拒稿理由啥意思啊阿啊
  • ¥15 关于vue2中methods使用call修改this指向的问题
  • ¥15 idea自动补全键位冲突
  • ¥15 请教一下写代码,代码好难
  • ¥15 iis10中如何阻止别人网站重定向到我的网站
  • ¥15 滑块验证码移动速度不一致问题
  • ¥15 Utunbu中vscode下cern root工作台中写的程序root的头文件无法包含