【发布时间】:2018-05-09 07:09:56
【问题描述】:
我正在努力在 python 中实现 kmeans 算法。 我正在测试初始化我的质心的新方法,并希望实现它,看看它会对集群产生什么影响。
我的想法是从我的数据集中选择数据点,将质心初始化为数据的边缘点。
简单示例2属性示例:
假设这是我的输入数组
input = array([[3,3], [1,1], [-1,-1], [3,-3], [-1,1], [-3,3], [1,-1], [-3,-3]])
我想从这个数组中选择 [3,3] [-3,-3] [-3,3] [3,-3] 的边缘点。所以如果我的k是4,这些点就会被选中
在我正在处理的数据中,我的数据集中有 4 个和 9 个属性以及大约 300 个数据点
注意:当 k 边缘点时,我没有找到解决方案,但如果 k 是 > 边缘点,我想我会选择这 4 个点,然后尝试将其余的点放在图形的中心点周围
我还考虑为每列找到最大值和最小值,然后尝试从那里找到我的数据集的边缘,但我不知道从这些值中识别边缘的有效方法。
如果您认为这个想法行不通,我很想听听您的意见。
问题
- numpy 有没有这样的功能来获取我的数据集边缘的数据点的索引?
- 如果没有,我将如何在我的数据集中找到这些边缘点?
【问题讨论】:
-
边缘点是什么意思?
-
对不起,如果我不清楚,我所说的边缘点是指数据集中包含属性的最大值/最小值的数据点,使它们离中心最远。我用一张希望能更好地解释这一点的图片更新了问题。
标签: arrays numpy initialization k-means centroid