我目前正在解决的挑战如下:
我希望在每分钟更新的列表中查找 CSV 数据中的模式。我需要找到特定的模式,例如
EX(从左到右):(100-125-150-120-135-160-180-145-165-185-200-190-180)
数据从 100 变为 125,再变为 150。因为后来变为 120,所以我需要将 150 记录为该本地集群中的最高值,并存档该数字以供以后使用。因为在 120 之后,它变为 135,然后是 160,然后是 180,最后降至 145,因此我想再次将 180 记录为该特定集群的最高值,同时保留之前的 150。如果重复此过程,它也会记录 200,因为这是在值再次低于最高值之前本地集群中的最高数字
我不确定要使用的精确方法,所以我还没有达到编码的目的
我通过搜索找到的技术总结包括机器学习模型,但我的理解是,在如此简单的过程中不需要机器学习。纯逻辑应该合适
是的,你是对的,机器学习可能会大材小用,对于这种模式,一个带有 if 语句的简单 for 循环就足够了。 下面是所有这些的伪代码,也是 python 语言的实现(逻辑与任何其他语言几乎相同)
伪代码:
Initialize variables:
highs = empty list
current_value = None
potential_high = None
我们迭代输入数据中的每个值。 对于第一个值,我们初始化 current_value 和 Potential_high。 假设所有值都包含在数据内(可以是我们的 csv 文件)
对于数据中的每个值:
IF current_value is None:
# First value in the data
Set current_value = value
Set potential_high = value
如果当前值大于电位高点,我们就找到了新的电位高点。
ELSE IF value > potential_high:
# Value is increasing, update the potential high
Set potential_high = value
如果当前值小于或等于势能高,我们遇到了下降,因此我们记录势能高并启动一个新集群。
ELSE IF value <= potential_high:
# Value is decreasing, check for a unique local high
IF potential_high NOT IN highs:
Append potential_high to the highs list
Reset potential_high = current_value
更新位置
Set current_value = value
下面是您提供的相同数据的 python 实现,即 [100, 125, 150, 120, 135, 160, 180, 145, 165, 185, 200, 190, 180],用逗号“,”或 csv 分隔
highs = []
current_value = None
potential_high = None
data = [100, 125, 150, 120, 135, 160, 180, 145, 165, 185, 200, 190, 180]
for value in data:
if current_value is None:
# Initialize on the first value
current_value = value
potential_high = value
elif value > potential_high:
# Update potential high if value greater
potential_high = value
elif value <= potential_high and potential_high not in highs:
# Add potential high to highs if it's unique and less than or equal to current high
highs.append(potential_high)
# Update current value for next iteration
current_value = value
print("Unique Local Highs:", highs)
输出:独特的局部高点:[150, 180, 200]
希望这有帮助!