adtk icon indicating copy to clipboard operation
adtk copied to clipboard

flowchart has problem

Open taroyutao opened this issue 3 years ago • 1 comments

import numpy as np import pandas as pd from adtk.data import validate_series import matplotlib.pyplot as plt from adtk.visualization import plot from adtk.transformer import DoubleRollingAggregate from adtk.detector import ThresholdAD, QuantileAD from adtk.aggregator import AndAggregator

故障检测

from adtk.pipe import Pipenet

steps = { # 长窗口历史数据扫描,规避持续异常跳变 "more_step_roll_aggr": { "model": DoubleRollingAggregate( agg="max", window=(20, 1), diff="diff" ), "input": "original", }, # 确保递增是一直持续存在 "abs_more_step_roll_aggr": { "model": ThresholdAD( high=0 ), "input": "more_step_roll_aggr" },

# 短窗口数据扫描,相对变化率(斜率)判断
"one_step_change": {
    "model": DoubleRollingAggregate(
        agg="mean",
        window=(3, 1),
        diff="rel_diff"
    ),
    "input": "original",
},
"abs_one_step_change": {
    "model": ThresholdAD(high=0.2),
    "input": "one_step_change"
},

"base_level_detect1": {
    "model": ThresholdAD(high=100),
    "input": "original"
},

"positive_level_shift": {
    "model": AndAggregator(),
    "input": ["abs_more_step_roll_aggr", "abs_one_step_change", "base_level_detect"]
}

}

pipenet = Pipenet(steps) pipenet.plot_flowchart()

plt.show()

plt.savefig('net1.png') image

taroyutao avatar Jun 10 '22 08:06 taroyutao

import numpy as np
import pandas as pd
from adtk.data import validate_series
import matplotlib.pyplot as plt
from adtk.visualization import plot
from adtk.transformer import DoubleRollingAggregate
from adtk.detector import ThresholdAD, QuantileAD
from adtk.aggregator import AndAggregator
from adtk.pipe import Pipenet

# Example data
np.random.seed(0)
data = pd.Series(np.random.randn(100))

# Validate the series
data = validate_series(data)

# Define the pipeline steps
steps = {
    # Long window historical data scan
    "more_step_roll_aggr": {
        "model": DoubleRollingAggregate(
            agg="max",
            window=(20, 1),
            diff="diff"
        ),
        "input": "original",
    },
    # Ensure increment is consistently present
    "abs_more_step_roll_aggr": {
        "model": ThresholdAD(
            high=0
        ),
        "input": "more_step_roll_aggr",
    },

    # Short window data scan
    "one_step_change": {
        "model": DoubleRollingAggregate(
            agg="mean",
            window=(3, 1),
            diff="rel_diff"
        ),
        "input": "original",
    },
    "abs_one_step_change": {
        "model": ThresholdAD(high=0.2),
        "input": "one_step_change",
    },

    "base_level_detect1": {
        "model": ThresholdAD(high=100),
        "input": "original"
    },

    "positive_level_shift": {
        "model": AndAggregator(),
        "input": ["abs_more_step_roll_aggr", "abs_one_step_change", "base_level_detect1"]
    }
}

# Initialize Pipenet with the steps
pipenet = Pipenet(steps)

# Plot the flowchart
pipenet.plot_flowchart()

# Save the figure
plt.savefig('net1.png')
plt.show()

ljluestc avatar Sep 08 '24 18:09 ljluestc