使用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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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