保存集群坐标集

时间:2019-04-17 14:18:48

标签: python

我有一组坐标,并将其绘制为散点图。然后将DBSCAN应用于这些点,以便将封闭在一起的点形成一个簇(注意:黑点被归类为噪声)。

enter image description here

现在,我想找到聚类的质心(通过将x和y坐标相加并求平均值)。我能够获得一组坐标(被分组到各自的簇中),它看起来像这样:

[[10. 75.]
 [11. 74.]
 [11. 75.]
 [12. 73.]
 [12. 74.]
 [12. 75.]]
[[34. 49.]
 [34. 50.]
 [35. 48.]
 [35. 49.]
 [35. 50.]
 [36. 48.]
 [36. 49.]
 [36. 50.]]
[[43. 78.]
 [43. 79.]
 [43. 80.]
 [43. 81.]
 [44. 78.]
 [44. 79.]
 [44. 80.]
 [44. 81.]
 [45. 78.]
 [45. 79.]
 [45. 80.]
 [45. 81.]
 [46. 78.]
 [46. 79.]
 [46. 80.]
 [46. 81.]
 [47. 78.]
 [47. 79.]
 [47. 80.]
 [47. 81.]
 [48. 79.]
 [48. 80.]]
[[53. 63.]
 [53. 64.]
 [53. 65.]
 [54. 63.]
 [54. 64.]
 [54. 65.]
 [54. 66.]
 [55. 63.]
 [55. 64.]
 [55. 65.]
 [55. 66.]
 [56. 63.]
 [56. 64.]
 [56. 65.]
 [56. 66.]]
[[ 72. 115.]
 [ 73. 114.]
 [ 73. 115.]
 [ 73. 116.]
 [ 73. 117.]
 [ 73. 118.]
 [ 74. 113.]
 [ 74. 114.]
 [ 74. 115.]
 [ 74. 116.]
 [ 75. 113.]
 [ 75. 114.]
 [ 75. 115.]
 [ 75. 116.]
 [ 75. 117.]
 [ 76. 113.]
 [ 76. 114.]
 [ 76. 115.]
 [ 76. 116.]
 [ 76. 117.]
 [ 77. 115.]
 [ 77. 116.]]
[[79. 56.]
 [79. 57.]
 [79. 58.]
 [79. 59.]
 [80. 57.]
 [80. 58.]
 [80. 59.]]

...,其中每个[[&]]标记群集的开始和结束。 因此,我想知道是否存在一种方法,可以将每组簇坐标分别保存到其单独的txt文件中(以便以后进行平均计算更容易),从而保存簇坐标集?

1 个答案:

答案 0 :(得分:0)

如果您具有以下两个群集:

clusters_2d = [
    [
        [10, 75,],
        [11, 74,],
        [11, 75,],
        [12, 73,],
        [12, 74,],
        [12, 75,],
    ],
    [
        [34, 49,],
        [34, 50,],
        [35, 48,],
        [35, 49,],
        [35, 50,],
        [36, 48,],
        [36, 49,],
        [36, 50,],
    ]
]

为了将它们保存为单独的文件,您可以遍历坐标:

使用泡菜

import pickle

for i, x in enumerate(clusters_2d):
    pickle.dump( x, open( f"cluster_{i}.pkl", "wb" ) )

然后为了读取这些文件之一:

cluster1 = pickle.load( open( "cluster_0.pkl", "rb" ) )

使用txt

for i, x in enumerate(2d_clusters):
    with open(f'cluster_{i}.txt', 'w') as f:
        for item in x:
            f.write(f"{item}\n")

您可以将它们保存在pickle文件或txt中或任何您喜欢的文件中。