gpt4 book ai didi

haskell - 使用 Haskell 进行无监督聚类

转载 作者:行者123 更新时间:2023-12-04 05:47:48 25 4
gpt4 key购买 nike

我正在尝试开发一种算法,该算法可以报告数据集之间出现类似模式的频率和接近程度。

简单的例子:

set1 = [0, 1, 0, 0, 2, 0, 0, 3, 0]
set2 = [1, 2, 3, 0, 0, 0, 0, 0, 0]
set3 = [0, 0, 0, 0, 0, 1, 2, 0, 3]

这些集合中的每一个都有 1、2 和 3,但这些数字在 set2 和 set3 中更接近。

我怀疑我可以通过列表理解来完成这项任务。我可以将数据绘制到变量 x 和 y 中,并将每个匹配项编入列表列表中,其中一个嵌入列表中的第一个元素是找到的匹配项的字符串,第二个和第三个元素是它们的位置。我可以通过另一个函数运行这个列表,该函数计算这些匹配发生的频率和接近程度,并报告一个百分比。

或者也许有更优雅的方式来做到这一点?

我还是一个 Haskell 新手。任何意见,将不胜感激。

最佳答案

好的,如果你有 1, 2, 3 的顺序,那么你有计算接近度的公式:prox = indexOf 3 - indexOf 1 - 2。所以,prox 是 1..2 和2..3.你可以用 Haskell 写:

prox :: [Integer] -> Int
prox s = i3 - i1 - 2
where
Just i3 = findIndex (==3) s
Just i1 = findIndex (==1) s

您可以将其概括为这种情况,而无需假设 1 先行而 3 后。

关于haskell - 使用 Haskell 进行无监督聚类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10459384/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com