Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 根据连续平均值出现的时间长度查找局部最小值,而不落入错误的最小值 1.问题描述_Algorithm_Time Series - Fatal编程技术网

Algorithm 根据连续平均值出现的时间长度查找局部最小值,而不落入错误的最小值 1.问题描述

Algorithm 根据连续平均值出现的时间长度查找局部最小值,而不落入错误的最小值 1.问题描述,algorithm,time-series,Algorithm,Time Series,我有下面的值列表[10,10,10,5,5,5,7,7,2,4,3,3,3,10],如下图所示。 我要做的是根据元素的值和 它的持续时间。从前面的列表中,我们可以构造以下字典键:val:[10:4,5:4,7:2,2:1,4:1,3:3,10:1]。这意味着我们有4个成功的10秒,然后是4个连续的5秒、2个连续的7秒和3个连续的3秒 根据我所说的,当地的最小值是5。但我不希望本地最小值为3。我们没有选择2,因为它只发生过一次 你对我们如何解决那个问题有什么想法吗。有没有一种现有的方法可以用来解

我有下面的值列表[10,10,10,5,5,5,7,7,2,4,3,3,3,10],如下图所示。


我要做的是根据元素的值和 它的持续时间。从前面的列表中,我们可以构造以下字典键:val:[10:4,5:4,7:2,2:1,4:1,3:3,10:1]。这意味着我们有4个成功的10秒,然后是4个连续的5秒、2个连续的7秒和3个连续的3秒

根据我所说的,当地的最小值是5。但我不希望本地最小值为3。我们没有选择2,因为它只发生过一次

你对我们如何解决那个问题有什么想法吗。有没有一种现有的方法可以用来解决这个问题

当然,我们可以按值[10:4、5:4、7:2、3:3、10:1]对字典进行排序,并选择值不同于1的最低键。这是一个好的解决方案吗

2.选择标准 必须是本地min find_local_minprices 必须拥有最高的继任人数 最小连续时间必须大于1 我被卡住了!因为现在我有3个作为局部最小值,但它只重复了3次。我在测试我的想法是否正确,我试图找到一个反例,结果我的脚受伤了 3.源代码 以下代码使用字典提取最小值:

#!/usr/bin/env python
import csv
import sys
import os

from collections import defaultdict

def find_local_min(prices):
    i = 1
    minPrices = []
    while i < len(prices):
        if prices[i] < prices[i-1]:
            minPrices.append(prices[i])
            j = i + 1
            while j < len(prices) and prices[j] == prices[j-1]:   
                minPrices.append(prices[j])
                j += 1   
            i = j 
        else:
            i += 1
    return minPrices 


if __name__ == "__main__":

    l = [10, 10, 10, 10, 5, 5, 5, 5, 7, 7, 7, 2,4, 3, 3, 3, 10]
    minPrices = find_local_min(l)

    minPriceDict = defaultdict(int)
    for future in minPrices :
        minPriceDict[future] += 1

    print minPriceDict
作为输出,if给出以下内容:defaultdict,{2:1,3: 3,5:4}基于此输出,算法将选择5作为最小值 因为它连续重复了5次。但那是错误的!信息技术 应该是3。我真的很想知道如何解决那个问题


基于元素的值及其持续时间-你的意思是什么?i、 为什么3是本地最小值而不是5?这是基于总数还是仅仅是连续发生的事件?对不起,对我来说,这些似乎是相互排斥的。我仍然不明白为什么3是正确答案,5不是。选择本地键的明确标准是什么。中间键应小于上一个键和下一个键。中间键中存储的值应至少为2。列出所有这些键并选择最小的键。@VidorVistrom列出了我建议的解决方案。你应该走这条路。根据元素的值及其持续时间-你的意思是什么?i、 为什么3是本地最小值而不是5?这是基于总数还是仅仅是连续发生的事件?对不起,对我来说,这些似乎是相互排斥的。我仍然不明白为什么3是正确答案,5不是。选择本地键的明确标准是什么。中间键应小于上一个键和下一个键。中间键中存储的值应至少为2。列出所有这些键并选择最小的键。@VidorVistrom列出了我建议的解决方案。你应该走这条路。