一、作業要求
給定訓練集train.csv,要求根據前9個小時的空氣監測情況預測第10個小時的PM2.5含量。
訓練集介紹:
- CSV文件,包含臺灣豐原地區240天的氣象觀測資料(取每個月前20天的數據做訓練集,12月X20天=240天,每月後10天數據用於測試,對學生不可見);
- 每天的監測時間點爲0時,1時…到23時,共24個時間節點;
- 每天的檢測指標包括CO、NO、PM2.5、PM10等氣體濃度,是否降雨、颳風等氣象信息,共計18項;
二、思路分析及代碼實現
思路分析:
根據作業要求可知,需要用到連續9個時間點的氣象觀測數據,來預測第10個時間點的PM2.5含量。針對每一天來說,其包含的信息維度爲(18,24)(18項指標,24個時間節點)。可以將0到8時的數據截取出來,形成一個維度爲(18,9)的數據幀,作爲訓練數據,將9時的PM2.5含量取出來,作爲該訓練數據對應的label;同理可取1到9時的數據作爲訓練用的數據幀,10時的PM2.5含量作爲label…以此分割,可將每天的信息分割爲15個shape爲(18,9)的數據幀和與之對應的15個label。 訓練集中共包含240天的數據,因此共可獲得240X15=3600個數據幀和與之對應的3600個label。
代碼實現:
具體原理可參考:傳送門
1. 數據預處理
讀入文件,查看文件細目。
保留PM2.5行,去除其他行。
製作traindata和對應的label,並保留爲python文件,方便調用。
2. 訓練
導入保存的數據。
開始利用梯度下降法進行訓練。
看看loss下降曲線,保留模型文件。
3. 預測
加載模型並進行預測。由於該測試集無label信息,故無法進行評估。
三、模型改進的方向
- 在從csv文件中提取數據幀和label時,本文以天爲單位,每天分割出15個數據幀和15個label。事實上,時間是連續的,可以將每月的20天首尾連接,再從其中分割數據幀和label,可使數據幀樣本數量大大提升,可能會使模型效果更優。
- 在構建模型時,應充分考慮PM2.5與其他大氣成分之間的關係,構建更合理的模型。
- 分割訓練集和驗證集時,應該按照比例隨機抽取數據幀作爲訓練集和驗證集,而不是像本文那樣簡單地把前3200個數據樣本作爲訓練集,後400個作爲驗證集。
數據集和代碼見:代碼地址