es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Encontrando máximos locales usando find_peaks

Estoy utilizando scipy.signal.find_peaks para tratar de encontrar los valores máximos de datos muy fluctuantes. Utilizando el siguiente dataframe:

import pandas as pd
import numpy as np
from scipy.signal import find_peaks
Data = [95,95,95,95,95,95,95,95,94,94,94,94,94,94,94,94,229,444,457,387,280,188,236,181,183,183,185,186,189,190,190,190,179,165,151,151,161,214,213,213,214,213,212,195,179,160,158,155,114,98,164,346,229,39,134,149,194,1,153,171,187,185,104,102,100,90,90,92,92,92,93,93,93,93,93,93,94,94,94,94,94,11,1,11,11,70,182,104,58,60,134,115,99,97,99,98,98,97,97,97,97,97,97,97,97,97,96,96,96,96,96,96,96,96,96,96,96,96,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,93,93,152,206,221,286,326,341,360,377,391,392,393,393,393,394,406,418,420,422,422,408,389,345,329,276,224,166,113,-6,91,91,91,442,324,387,389,387,443,393,393,393,393,391,381,379,377,303,174,131,0,115,112,112,111,111,109,107,106,104,104,103,102,101,101,101,101,100,100,1,1,12,13,65,138,87]
df2 = pd.DataFrame(Data)


# convertir a un arreglo unidimensional
numero_columna = df.loc[:, 'Data']
numeros = numero_columna.values

# encontrar picos para el arreglo unidimensional
picos = find_peaks(numeros, height=300, threshold=1, distance=5)
altura = picos[1]['peak_heights']  # lista de alturas de los picos
posicion_pico = numeros[picos[0]]
print(picos)

# trazar los picos
fig = plt.figure()
ax = fig.subplots()
ax.plot(numeros)
ax.scatter(posicion_pico, altura, color='r', s=25, label='Máximos')
ax.legend

Estoy obteniendo los extremos locales de 457, 346, 442, 443. Sin embargo, en este sistema necesito obtener los siguientes valores como los extremos: (457, 346, 422, 443)

Al trazar mis extremos, obtengo esto:

Imagen de gráfico

Entonces, mi pregunta es si alguien sabe cómo obtener los extremos correctos que necesito. Solo me falta el valor 422 y he estado probando diferentes configuraciones pero no he tenido éxito.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Basándose en los datos proporcionados y los máximos y mínimos locales deseados, parece que los parámetros de height y distance deben ser ajustados para encontrar los picos correctos.

    Actualmente, el parámetro de height está establecido en 300 y el parámetro de distance está establecido en 5. El parámetro de height representa la altura mínima que un pico debe tener para considerarse un pico, y el parámetro de distance representa la distancia mínima (en puntos de datos) entre picos.

    Para encontrar los picos deseados, el parámetro de height podría ser disminuido y el parámetro de distance podría ser aumentado. Por ejemplo, establecer height en 200 y distance en 10 puede ayudar a capturar el valor faltante de 422. Puede ser necesario experimentar con diferentes valores de parámetros para encontrar los valores óptimos para los datos específicos y los máximos y mínimos deseados.

Comments are closed.