---
# System prepended metadata

title: AP5成型機 - 算法筆記 (參數趨勢統計)
tags: [AP5成型機]

---

# AP5成型機 - 算法筆記 (參數趨勢統計)
> [name=JayHsu][time=Tue, Sep 24, 2019 6:36 PM]

## 算法流程

![](https://i.imgur.com/9LmJ3il.png)

步驟：
1. 讀取控制器數據與健康值數據
2. 根據健康值, 將控制器數據分成異常(Defect)和正常(ok)兩部份
3. 計算每個參數的基準值(健康數據的中位數)
4. 計算defect模次每個參數和基準的差距
5. 將上一步計算的差距轉為定性的特徵(變大(差距>0), 變小(差距<0), 不變(差距=0))
4. 匯總每一個參數出現次數最多的特徵


## Source Code
> http://10.160.29.112:8888/tree/AP5/MMIA/IM_Algorithm/Algorithm-TrendAnalysis.ipynb

Source Code主要包含兩個Class, 一個(DataAgent)讀取數據, 另一個(TrendAnalysis)分析參數趨勢

```python=
class DataAgent(object):
    """This class implement data query funciton
    functinos:
        gethvdata - 查詢健康值數據
        getcontroldata - 查詢控制器數據  
    """ 
    
    def gethvdata(self, ts1, ts2, mid):
        """
        從sqlite db抓設備健康值數據
        Parameters:
            ts1 - 開始時間(timestamp)
            ts2 - 結束時間(timestamp)
            mid - 設備ID(string)
        Returns:
            設備健康值數據(Dataframe)
        """
        
    def getcontroldata(self, ts1, ts2, mid, data_type):
        """
        從solr api抓控制器原始數據
        Parameters:
            ts1 - 開始時間(timestamp)
            ts2 - 結束時間(timestamp)
            mid - 設備ID(string) [A01, A03, A05, A06]
            data_type - 數據類型 (string) [spc, alarmrecord, historyrecord, machinestatus]
        Returns:
            Dataframe, 設備健康值數據
        """        
```

```python=
class TrendAnalysis(object):
    """This class implement 參數趨勢統計
    functinos:
        preparedata - 準備趨勢分析要用的數據
        getDevAnalysis - 參數趨勢分析
        plt - 畫圖
    """ 
    def preparedata(self):
        """
        準備趨勢分析要用的數據, 並根據健康值, 將數據分成defect和ok兩部份
            設備健康值數據 - df_hv
            控制器數據 - df_ctr
            控制器數據(異常事件的區間) - df_ctr_defect
            控制器數據(健康值正常的區間) - df_ctr_ok
        Parameters: NA
        Returns: NA
        """        
        
    def getDevAnalysis(self):
        """
        趨勢分析, 以下為分析步驟
        1. 先計算每個參數的基準(健康數據的中位數)
        2. 再計算defect模次每個參數和基準的差距
        3. 將上一步計算的差距轉為定性的特徵(變大(差距>0), 變小(差距<0), 不變(差距=0))
        4. 匯總每一個參數出現次數最多的特徵
            分析結果 - df_devSummary    
        Parameters: NA
        Returns: NA
        """   
        
    def plt(self):
        """
        畫出每個參數的趨勢圖, 並標註
            Defect模次 - 紅色
            基準線(健康模次的中位數) - 黃色
        Parameters: NA
        Returns: NA
        """                        
```

## Demo
```python=
casecfg = json.load(open('case.json', 'r'))
trendAnalysis = TrendAnalysis(casecfg=casecfg['case01'])
trendAnalysis.plt()
display(trendAnalysis.df_devSummary)
```
![](https://i.imgur.com/NptEbzs.png)
![](https://i.imgur.com/xSPyWhj.png =500x)


###### tags: `AP5成型機`

