基于pyclus的加权聚类

2024-05-18 12:04:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经设法采用了一个代码片段来说明如何使用PyCluster的k-means聚类算法。我希望能够对数据点进行加权,但不幸的是,我只能权衡特征。我是错过了什么,还是有什么诀窍可以让某些分数比其他分数更重要?在

import numpy as np
import Pycluster as pc

points = np.asarray([
    [1.0, 20, 30, 50],
    [1.2, 15, 34, 50],
    [1.6, 13, 20, 55],
    [0.1, 16, 40, 26],
    [0.3, 26, 30, 23],
    [1.4, 20, 28, 20],
])

# would like to specify 6 weights for each of the elements in `points`
weights = np.asarray([1.0, 1.0, 1.0, 1.0])

clusterid, error, nfound = pc.kcluster(
    points, nclusters=2, transpose=0, npass=10, method='a', dist='e', weight=weights
)
centroids, _ = pc.clustercentroids(points, clusterid=clusterid)
print centroids

Tags: 代码importasnp聚类分数pointsmeans
1条回答
网友
1楼 · 发布于 2024-05-18 12:04:29

加权单个数据点不是KMeans算法的一个特性。这是在算法定义中:它在pycluster、MLlib或TrustedAnalytics中不可用。在

但是,可以添加重复的数据点。例如,如果希望第二个数据点的计数是原来的两倍,请将列表更改为:

points = np.asarray([
    [1.0, 20, 30, 50],
    [1.2, 15, 34, 50],
    [1.2, 15, 34, 50],
    [1.6, 13, 20, 55],
    [0.1, 16, 40, 26],
    [0.3, 26, 30, 23],
    [1.4, 20, 28, 20],
])

相关问题 更多 >