iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 29
0
AI & Data

時間管理大師-時間序列分析終極密技系列 第 29

[Day29]懶惰的人是時間的奴隸-資料醫生,補值高手

  • 分享至 

  • xImage
  •  

昨天我們發現,過多的樣本反而會對估計做出反效果,因此我們今天要來縮小樣本來補值,說到縮小樣本,就不得不提到鼎鼎大名的KNN演算法,又稱為K-近鄰演算法最近鄰居法,相關理論很複雜,我們先跳過,總而言之就是是用空缺鄰近的數值來推估缺值,以下示範多款比較高端的插值法

import pandas as pd
import numpy as np
from matplotlib import pyplot as plt 


if __name__ == "__main__":
    data = pd.read_csv("./temp.csv")

    # 有些插值法是時間序列專用,所以最好先將索引轉成時間
    data["time"] = pd.to_datetime(data["time"])
    data = data.set_index("time")

    # 線性插值法
    data["linear_imputed"] = data["temp"].interpolate(method="linear")

    # 最近鄰居插值法
    data["nearest_imputed"] = data["temp"].interpolate(method="nearest")

    # 導數插值法
    data["from_derivatives_imputed"] = data["temp"].interpolate(method="from_derivatives")

    # 以下這些方法會使用到索引,請加上一個順序參數,其中多項式跟樣條一定要加
    # 時間插值法,時間序列專用
    data["time_imputed"] = data["temp"].interpolate(method="time", order=10)

    # 線性插值法
    data["slinear_imputed"] = data["temp"].interpolate(method="slinear", order=10)

    # 二次插值法
    data["quadratic’_imputed"] = data["temp"].interpolate(method="quadratic", order=10)

    # 三次插值法
    data["cubic_imputed"] = data["temp"].interpolate(method="cubic", order=10)

    # 零插值法
    data["zero_imputed"] = data["temp"].interpolate(method="zero", order=10)

    # 樣條插值法
    data["spline_imputed"] = data["temp"].interpolate(method="spline", order=2)

    # 多項式插值法
    data["polynomial_imputed"] = data["temp"].interpolate(method="polynomial", order=2)

    data.to_csv("./OK.csv")


這個數值是不是比昨天更有說服力了呢


上一篇
[Day28]一吋光陰不可輕-修好你的資料,補值初學上線
下一篇
[Day30]凌晨狂上上下下23次-時間序列分析終局之戰,ARIMA差分整合移動平均自迴歸模型
系列文
時間管理大師-時間序列分析終極密技30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言