---
# System prepended metadata

title: Server API

---

# Server API

# 抓取資料到製作建模資料流程
  ***
## STEP 1 : **抓取前一天資料並預測**


* 每天早上6:00抓取前一天3個檔案 **('is_ad_long', 'is_ad_short', 'no_ad')**，並合成一個檔案 

## STEP 2 : **進行預測並分割檔案**
* 做好的資料送去server進行預測，並將結果存到 AITeam_Result/ 

* 接著將我們預測與他們預測結果不同的資料抓出來，並分成6個檔，檔案存取路徑為:  
**"AITeam_Result/ad_adjust/adj_from_people_2020XXXX"**(2020XXXX為執行程式的日期)，  
在6個檔案中，每個檔案分別增加一個column **["finish_correct"]**

* 增加一個資料夾 **"finifish_adj"** 用於存放校正完的資料，路徑為 :    **"AITeam_Result/finish_adj/"** 

## STEP 3 : **將被校正完的資料抓出，以供重新建模**
* 程式會去 **"finish_adj"** 中抓出有被校正的資料，並以CSV檔案存資料，放在 "adj_ad_for_train"資料夾下，路徑為 :　**"AITeam_Result/adj_ad_for_train/"**
  
* 統計每天被校正的資料有幾筆，統計資料存放於 "statistic" 中， 
  路徑為 : **'AITeam_Result/statistic/'**
 

  
  


# 資料校正方法
***
要進行校正時，必須將 **"adj_from_people_2020XXXX"** 整個資料夾複製到 **"finifish_adj"** 中，所以位於 "finish_adj 中" 的資料都是校正完的資料。

   校正時，當發現有需要校正的資料，直接於"is_ad_result"欄位中更改校正值("Y" or "N")，並在 "finish_correct" 欄位中打上數字 "1"，如果沒校正則不用打任何字
   
   


# 預防error發生的機制
***
## 情況: 
假設有某天或者假日沒人進行校正，因此缺少當天的校正資料
## 解決方法:
程式會去 **'AITeam_Result\adj_ad_for_train'** 找尋缺少建模資料的日期，然後再去 **'AITeam_Result\finish_adj'** 找出相對應日期且校正完的資料進行製作訓練資料


# 重新建模
***
將校正完的資料與原本模型的訓練資料結合，形成新的訓練資料，並重新建一次模型(Model1 and Model2)，其中，Model1原本的訓練資料是無人調整，Model2的訓練資料則是有經過人工調整

## 流程:
1. 到**AITeam_Result/adj_ad_for_train/model1**與   **AITeam_Result/adj_ad_for_train/model2**分別抓模型一與模型二舊的訓練資料

2. 將 **AITeam_Result/adj_ad_for_train/** 中已經校正完的新訓練資料與第1點的舊訓練資料進行合併，並分別存放到:
**AITeam_Result/adj_ad_for_train/model1** 與**AITeam_Result/adj_ad_for_train/model2** 

3. 到第2點的兩個存放新訓練資料的路徑分別讀取訓練資料(model1 & model2)，並以turictrate 進行重新建模，建好的模型存放於:
   **AITeam_Result/model/model1** 與**AITeam_Result/model/model2**。
   另外，並另外 開一個 **'model_for_server'** 資料夾存放新模型給server 重新讀取模型。
   (model1 與 model2 儲存模型，model_for_server給server)





