上篇對機器學習中的數據分析進行了詳細介紹,想了解的可以看上篇文章哈機器學習-數據分析,廢話不多說,正文如下:
我們先看一部分缺失值數據,以對我們要處理的內容有初步了解
圖片比較小,其實這段時間的數據缺失值還是較多的(我是特意找了段缺失值多的數據,方便我們後面對比不同處理方法的結果,嘿嘿~~~),這裡面我們以temp_out欄位為例來進行下面的缺失值處理啦。
首先我們先看下原始數據的曲線圖:
為了對比缺失值效果,填充後的曲線統一下移一定距離哈~~~
1:前值替換缺失值
df_show = df_show.fillna(method='ffill')
2:後值替換
為了保證預測的一致性,我從來不使用後值替換,因為預測的時候出現缺失值只能使用已有的歷史數據進行填充,不建議使用後值替換。
3:不進行填充
這種情況需要考慮算法的適用性,比如線性回歸、支撐向量回歸等需要進行缺失值處理,否則算法無法處理;而決策樹等以樹為基準的算法則不需要進行缺失值處理;具體需要針對不同算法來確定。
4:0值或均值填充
0值填充就不說了,簡單看下均值填充效果吧
mean_v = df_show ["temp_out"].mean()
df_show = df_show.fillna(mean_v)
5:鄰域均值填充
跟均值替換是一個道理,但鄰域均值替換會更好,因為是使用相鄰數據的均值,所以會更接近真實值(對於時序數據來說)。
mean_c = np.mean(list_v_src[k-near_num:k])
6:插值填充
這裡使用二次多項式插值。
df_show['temp_out'] = df_show['temp_out'].interpolate(method='polynomial', order=2)
除了這些,大家有什麼想法的也可以自己實現來替換缺失值,總之就是要依據數據來找到合適的缺失值填充方法。
當前羅列的都是一些很重要也是最常用的填充算法,對於時序數據來說,個人比較傾向於插值填充、近鄰均值填充,這些算法對連續數據有更好的擬合性。
寫了好多了,希望大家多多支持,發現有問題歡迎指出,喜歡的話可以關注下哈,桔子會持續更新更多精華內容哈~~~