使用MySQL进行“聚类分析”

时间:2010-11-17 16:30:57

标签: php mysql cluster-analysis

这是一个艰难的。可能有一个名字,我不知道,所以我将完全描述问题。

我有一个包含许多用户提交值的数据集。我需要能够根据某种平均值或更好的方式确定“数据的接近程度”,该值是正确的值。例如,如果我从三个用户4,10,3收到以下三个提交,我知道在这种情况下3或4将是“正确”值。如果我要将它平均化,我会得到5.6,这不是预期的结果。

我正在尝试使用MySQL和PHP来做到这一点。

tl; dr需要根据相对值的“接近度”从数据集中查找值(使用MySQL / PHP)

谢谢!

3 个答案:

答案 0 :(得分:2)

使用数据库进行群集不会是单一查询类型的过程。需要迭代才能有效地生成集群。

首先需要确定所需的群集数量。如果你只想要一个集群,那么显然一切都会进入它。如果你想要两个,那么你可以编写你的程序,使用某种相关度量将节点分成两组。

换句话说,我认为这不是一个MySQL问题,而是一个集群问题。

答案 1 :(得分:1)

我认为这就是你要找的东西:

SELECT id, MIN(ABS(id - (SELECT AVG(id) FROM table))) as min
FROM table
GROUP BY id
ORDER BY min
LIMIT 1;

例如,如果您的数据集包含以下ID:3,4,10,平均值为5.6667。最接近5.6667的值是4.如果您的数据集是3,6,10,14,平均值为8.25,则最接近的值为10.

这是此查询返回的内容。希望它有所帮助。

答案 2 :(得分:0)

我的印象是你正在寻找中位数

E.g。在列表1 2 3 4 100中,中位数(中心值)为3。

您可能希望搜索[https://stackoverflow.com/search?q=sql+median在SQL中查找中位数。]