javascript - 对象/数组比较算法以确定共性/相似性

标签 javascript algorithm compare similarity

我正在尝试找出确定各种对象或数组之间的共性或相似性的最佳方法,并且有兴趣获得社区的意见。我目前正在用 javascript 构建一个早期研究原型(prototype),我需要采用一种巧妙的方式来比较对象,以便识别新出现的模式或趋势。通过识别模式,我正在处理的应用程序将能够做出更明智的决策。

例如给定 6 个简化的对象:

A_obj = {w: 0.66, x: 0.36, y: 0.88, z: 0.34},
B_obj = {w: 0.46, x: 0.29, y: 0.91, z: 0.37},
C_obj = {w: 0.69, x: 0.40, y: 0.95, z: 0.38},
D_obj = {w: 0.78, x: 0.37, y: 0.84, z: 0.43},
E_obj = {w: 0.14, x: 0.41, y: 0.85, z: 0.53},
F_obj = {w: 0.85, x: 0.33, y: 0.96, z: 0.22};

从上面可以看出,x 和 y 特征具有更大程度的共性,而 w 和 z 特征具有更大的差异。

我希望找到一个相对轻量级的解决方案,该解决方案也很容易在其他语言中复制。欢迎所有想法和评论。

最佳答案

如果特征是独立的,你可以只计算 variance每个特征分别。由于您想独立于语言,这里是一些伪代码:

for each trait
    for each object
        add the current trait value to a variable to get a cumulative total
    divide the total by the number of objects to get the mean
    for each object
        subtract the trait value from the mean, and square the result
        add the result to a variable to get a cumulative total
    divide by the number of objects to get the mean of the squared differences

这将为您提供每个特征的方差。方差是正值的平均值,因此它始终为正。较低的值意味着较小的方差,较高的值意味着较大的方差。

关于javascript - 对象/数组比较算法以确定共性/相似性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25208815/

相关文章:

algorithm - 移动窗口算法

ruby - 如何比较两个 CSV 文件中的数据

javascript - 从 WebView 中的动态 HTML 内容连接到 Azure 移动服务

javascript - 使用 Object.assign() 时,React 组件不会重置状态?

javascript - Conways 生命游戏算法无法正常工作

c++ - 基于修改后的quick_sort的nth_element实现,未按预期工作

python - 查找列表中的值是否大于其下方的项目

sql - 如何比较表中的数据(操作前后)?

javascript - Jquery $(this), .children, .siblings 等

javascript - Magento 可配置产品下拉菜单 - 必须将 "Price Difference - +"更改为实际价格