使用k均值聚类算法预测值

我正在尝试机器学习,并用Python编写了一个k均值算法的实现。它可以处理二维数据并将它们组织成聚类。每个数据点还带有一个类值,要么是0,要么是1。

让我困惑的是如何使用这个算法来预测另一组没有0或1,而是未知值的二维数据。对于每个聚类,我是否应该将聚类内的点平均到0或1,如果一个未知点最接近该聚类,那么这个未知点就采用平均值?还是有更智能的方法?

谢谢!


回答:

要将一个新的数据点分配到由k均值创建的一组聚类中,你只需找到离该点最近的质心

换句话说,就是你对原始数据集中每个点进行迭代分配到k个聚类中的相同步骤。这里的唯一区别是,你用于此计算的质心是最终的集合——即,最后一次迭代时的质心值。

这里是一个用Python(带NumPy)的实现:

>>> import numpy as NP>>> # 只是基于你的规格(二维数据 + 2个聚类)编造的值>>> centroids      array([[54, 85],             [99, 78]])>>> # 在问题域内随机生成一个新数据点:>>> new_data = NP.array([67, 78])>>> # 要将一个新数据点分配到一个聚类ID,>>> # 找到它最近的质心:>>> diff = centroids - new_data[0,:]  # NumPy广播>>> diff      array([[-13,   7],             [ 32,   0]])>>> dist = NP.sqrt(NP.sum(diff**2, axis=-1))  # 欧几里得距离>>> dist      array([ 14.76,  32.  ])>>> closest_centroid = centroids[NP.argmin(dist),]>>> closest_centroid       array([54, 85])

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注