[Datawhale AI 夏令營] 機器學習 Task1 體驗記錄 思考 補充
前言
首先感謝 Datawhale 組織這個活動,讓我有機會入門機器學習。
嘛,不過這個 Task1 只要跟著速通手冊運行給定程序,再拿結果去提交,體驗下過程而已,于我而言,更為寶貴的地方是后續的“加餐”,也就是分析題目,精讀代碼的部分
“加餐”小結
分析題目
賽題任務是:通過多個房屋歷史電力消耗數據等信息,預測房屋對應電力的消耗。
這是所謂的“時間序列問題”,簡單地說就是分析數據和預測趨勢。
說起來,大一的課程設計也簡單做過所謂的“酒吧銷量預測”功能,當時是采用“線性回歸”來著。
而要解決這樣的問題,就大致有建立傳統時間序列模型、機器學習模型、深度學習模型的方法。
這三種方法各有利弊,按適合處理數據集規模大小和預測能力升序,按解釋性和計算資源降序。
分析代碼
先貼出代碼好了
# 1. 導入需要用到的相關庫
# 導入 pandas 庫,用于數據處理和分析
import pandas as pd
# 導入 numpy 庫,用于科學計算和多維數組操作
import numpy as np
# 2. 讀取訓練集和測試集
# 使用 read_csv() 函數從文件中讀取訓練集數據,文件名為 'train.csv'
train = pd.read_csv('train.csv')
# 使用 read_csv() 函數從文件中讀取測試集數據,文件名為 'train.csv'
test = pd.read_csv('test.csv')
# 3. 計算訓練數據最近11-20單位時間內對應id的目標均值
target_mean = train[train['dt']<=20].groupby(['id'])['target'].mean().reset_index()
# 4. 將target_mean作為測試集結果進行合并
test = test.merge(target_mean, on=['id'], how='left')
# 5. 保存結果文件到本地
test[['id','dt','target']].to_csv('submit.csv', index=None)
如果只是想了解思路,那么看完速通手冊,大致讀讀注釋即可,不過陸爻齊喜歡再深入一點點。
比如,為啥只要11-20天數據,1-20不行嗎,reset_index()是什么函數?
要理解處理數據的方式,可以看看數據本身的樣子,不過這里吐槽下,我還是第一次見到 WPS 會說太大了,受不了:)

回到正題,來看看這數據集究竟長啥樣

……………………………………………………

顯然,圖中 id 是房子編號,dt 是日期,type 是房子類型(暫且用不到),target 是用電量。
所以,代碼target_mean = train[train['dt']<=20].groupby(['id'])['target'].mean().reset_index()翻譯為自然語言,就是:以 id 為分組標識(想起了 mysql ),選擇其中日期 dt 小于等于 20 的數據,計算均值并重置索引。
重置索引的具體解釋,可以參考 這篇文章。
如此,target_mean 相當于下面數據
id target
00037f39cf 39.6543
……
而代碼test = test.merge(target_mean, on=['id'], how='left')則將上面剛得的 target_mean 與 test 左外連接。
先看看test長啥樣好了

圖片不用多加解釋,其實所謂的左外連接(又想起 mysql 了),就是把 test 以 id 為組,連到右邊的 target_mean,離散數學的映射中算是“滿射”
舉個栗子,test 中,id 00037f39cf 有十條,區別只有 id 1-10,而target_mean 中,id 00037f39cf 只有一條數據,也就是上面的
id target
00037f39cf 39.6543
于是按 id 連接,將相同 id 對應進行連接,也就是在 test 的基礎上,把 target_mean 同 id 那條數據中,除 id 自己外的屬性,連接到 test 上,如
id dt type target
00037f39cf 1 2 39.6543
00037f39cf 2 2 39.6543
00037f39cf 3 2 39.6543
……
最后一條代碼,即只保留該數據的id dt target,保存為新的表格 csv 文件,也就是那個 submit.csv。

小結
Task1 本身操作很簡單,要理解也不難,對于陸爻齊這樣稍微有點基礎知識也算有趣,后續推薦的 Pandas 學習的第十章也是時序預測(笑,期待 Task2。

陸爻齊參加由 Datawhale 組織的 AI 夏令營第二期活動記錄
浙公網安備 33010602011771號