Segmentazione dei dati sulla variazione di potenzaStiamo lavorando a un caso d'uso in cui il cliente dispone di dati sulla variazione di potenza (media e massima) di un prodotto. In precedenza, il cliente segmentava manualmente il grafico in diversi stati del carico di lavoro in base alle variazioni del valore di potenza. Ora punta ad automatizzare questo processo di segmentazione utilizzando JMP.
Ho allegato i dati insieme a uno screenshot che mostra il risultato previsto (derivato manualmente). Ogni stato identificato è definito da un punto di inizio e di fine, elencati nella colonna "Punto di inizio/fine". Per ogni stato, viene applicato un buffer di ±5 righe attorno ai punti di inizio e di fine effettivi.
Alcuni chiarimenti importanti dopo aver parlato con il cliente:
1. La variazione non è basata sul tempo
2. Il numero di stati non è fisso. Non sarà sempre 11, come mostrato nello screenshot.
3. Gli stati 7 e 8 nel loro risultato manuale sono stati distinti utilizzando la seconda variabile dell'asse Y
Ho sperimentato il clustering gerarchico e il clustering k-means, che hanno prodotto risultati vicini al risultato manuale, ma non una corrispondenza esatta. Avete suggerimenti per automatizzare meglio questo processo di segmentazione in JMP?
Re: Segmentazione dei dati sulla variazione di potenzaLa mia idea iniziale sarebbe quella di rimuovere gli zeri, quindi smussare i dati e cercare picchi nella derivata come indicatori dei diversi segmenti. Penso che sia fattibile, ma un po' "brutal force". Il clustering sembra una soluzione più "elegante", anche se non ho molta esperienza in merito.
Utilizzando il clustering gerarchico, sono riuscito a fare qualche progresso impostando il metodo su "Singolo", il formato dati su "I dati sono impilati" e "Non standardizzato". Se ho capito bene, penso che questo creerà cluster osservando i punti "vicini" che sono vicini tra loro sia in tempo che in potenza, considerandoli come punti in uno spazio 2D con il tempo in X e la potenza in Y. Forse qualcun altro può approfondire l'argomento?
Hierarchical Cluster(
Y( :"Time(s)"n, :"Power AVG (W)"n ),
Method( "Single" ),
Standardize Data( 0, "(for backward compatibility)" ),
Standardize By( "Unstandardized" ),
Dendrogram Scale( "Distance Scale" ),
Number of Clusters( 20 ),
SendToReport(
Dispatch( {"Dendrogram"}, "Clust Dendro", FrameBox,
{Frame Size( 47, 700 )}
)
)
);
Re: Segmentazione dei dati sulla variazione di potenzaA pensarci bene, credo che usare "I dati sono impilati" sia sbagliato. Ma usare "Singolo" + "Non standardizzato" sta comunque dando buoni risultati, almeno per me.