2020年6月9日 星期二

[tf.keras]利用LSTM預測泵傳感器剩餘壽命(二)—數據預處理


在上一章節,提供了數據的csv檔,在開始之前,請將數據檔案下載進電腦裡(此章節將用Excel做第一步的預處理)

https://www.kaggle.com/nphantawee/pump-sensor-data

下載完並解壓縮後會得到一個sensor.csv檔案,我們利用Excel開啟它。
從欄位中可以看到序號、日期時間、52項數據資料以及機器狀態。
其中,機器的狀態包含:broken(故障):7個、recovering(修復中)14477個、normal(正常狀態)220320個



我們按下,排序與篩選/篩選,然後對machine_status欄位按下篩選箭頭,勾銷NORMAL和RECOVERING後,就只剩下機器故障時的資料了。

接著我們在[timestamp]右邊插入剩餘時間欄位[time_left],格是選擇數值,目前可以看到最左邊的機器狀態為broken,所以我們把那7筆資料的剩餘時間填滿0。
請記得左側的藍色數字(最左側的編號),等一下會用到。

處理完之後解除篩選功能。
我們於C2的地方輸入公式:
=($B$17157-B2)*60*24
B12157是剛剛記下的藍色數字的第一個,減掉B2後代表機器第一次壞掉前的剩餘時間,60跟24則是讓它以分鐘為單位(本來是以天為單位)。
然後設定格是為數值。

沒意外的話得到的結果為17155,接著向下填滿,它並不會直接填滿到最底下,而是在剛剛輸入了0的地方被擋住,我們可以看到數字結果剛好符合。
如果0的上方不是1而是別的數字,則須考慮是否有操作錯誤(如果上方數字是三,則有可能是你將第A列的序號誤看成最左側的編號了)。
另外,機器狀態為RECOVERING的資料適不適用此計算方式尚未能完全確認(可以考慮刪除RECOVERING的資料)。

接著我們重複剛剛的動作,將第二次故障的時間減去現在的時間。

然後依此類推,總共做七次。



做完後可以先儲存成xlsx檔做備份,因為等一下要拆成兩份csv資料檔。

由於24512之後的資料並沒有損壞數據,故無法得知時間序列,將其刪除。

此時只剩下166442筆資料(含欄位名稱)。

接著複製[time_left]整個欄位並原地貼上為"值"。

貼上後可按圖中所框選的按鈕兩次,可以縮短為整數。


接著我們要打散資料,再最尾端增加[random]欄位,公式輸入:
=RAND()
並向下填滿

接著對[random]選擇從小到大排序,資料就隨機打散了。
然後記得,排序完[random]欄位要刪除。

訓練檔跟驗證檔比例我們分為8:2,由於現在資料總共是166442-1筆,故我們到166442*0.8=133152筆資料的地方停下,按ctrl+shift+↑可以選取上方所有資料。

然後按右鍵/刪除,然後將資料另存新檔成驗證檔test_sensor.csv(此時資料包含欄位大約33291筆)。

另存完後按ctrl+z回到刪除前,按下第133152筆資料,然後按ctrl+shift+↓可以選取下方所有資料。


然後按右鍵/刪除,然後將資料另存新檔成訓練檔train_sensor.csv(此時資料包含欄位大約133152筆)。

資料預處理完畢,下一章節將正式打code了。

[tf.keras]利用LSTM預測泵傳感器剩餘壽命(三)—訓練

2 則留言:

  1. 此時只剩下166442筆資料(含欄位名稱)。 => QUESTION: 資料原來有22萬筆, 為何只剩16萬筆?

    回覆刪除
    回覆
    1. 它的上一句:由於24512之後的資料並沒有損壞數據,故無法得知時間序列,將其刪除。

      刪除

有興趣或有疑問的歡迎提問與交流喔!!!