首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Ruby进行一维k均值聚类?

如何使用Ruby进行一维k均值聚类?
EN

Stack Overflow用户
提问于 2015-01-04 22:25:13
回答 1查看 1.1K关注 0票数 0

我的问题:

我已经搜索了可用的Ruby宝石,以找到执行k均值聚类的宝石。我发现了很多:金丝K均值聚类手段pp。我的问题是,没有一个宝石处理一维k均值聚类。他们都期望得到这样的输入:

代码语言:javascript
复制
[[1, 2], [3, 4], [5, 6]]

我的输入如下:

代码语言:javascript
复制
[1, 2, 3, 4, 5, 6]

因此,我的问题是:如何使用Ruby执行一维k均值聚类?

上下文(我的任务):

我有100个输入值:

0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、2、2、2、3、3、3、3、3、3、3、3、3、3、3、3、4、4、5、5、5、5、5、8、8、10、16、18、22、22、35、50、50

每个值表示一个响应时间,即某个客户服务代理响应客户电子邮件所需的分钟数。因此,第一个值0表示客户只等待了0分钟的响应。

我需要找出有多少个快速、中快和慢响应时间实例。换句话说,我想在3个池中将我的输入值削减,然后计算每个池中有多少。

复杂的因素是,我必须根据斜坡的整体陡度,找出在哪里进行切割。没有固定的定义快,中-快和慢。第一个切口(在快和中快之间)应该发生在坡度比以前急剧增加的地方。第二次切割(中快和慢之间)应该发生在更加剧烈的陡峭增长发生的时候。

以下是输入值的图形表示形式。

在上面的例子中,常识可能会将fast定义为0-3,因为有许多0、1、2和3.4-8或4-10的实例看起来像是中快的常识选择。但是如何从数学上确定这样的事情呢?如果响应时间通常更快,那么客户就会预期到这一点,所以在最后一个更小的增长应该会触发削减。

整理笔记:

我确实找到了处理一维k均值集群的gem 戴维德里查德,但是它似乎不能正常工作(示例代码引发了语法错误)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-04 22:50:58

不管怎么说,K-均值是这份工作的错误工具。

它不是为了拟合指数曲线而设计的。

以下是一个更合理的建议:

看这个情节,划上三分,然后你就有了你的三个小组。

或者看分位数。报告中位反应时间,90%分位数和99%分位数.

聚类是关于多元数据中的结构发现。这可能不是你想要的,抱歉。

如果您坚持尝试k-方法,请尝试将数据编码为

代码语言:javascript
复制
[[1], [2], [3], [4], [5]]

检查结果是否至少达到了你想要的程度(还记得k-均值是随机的)。多次运行可能会产生非常不同的结果)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27771043

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档