logo
Loading...

Day 7 作業解答之疑問 - Cupoy

解答如下# 1: 計算 q0 - q100q_all = [np.percentile(app_tr...

ml100-2,pd.quantile,np.nanpercentile,ml100-2-d07

Day 7 作業解答之疑問

2019/04/25 上午 03:09
機器學習共學討論版
楊立楷
觀看數:8
回答數:2
收藏數:1
ml100-2
pd.quantile
np.nanpercentile
ml100-2-d07

解答如下

1: 計算 q0 - q100
q_all = [np.percentile(app_train[~app_train['AMT_ANNUITY'].isnull()]['AMT_ANNUITY'], q = i) for i in range(100)]

但是 range(100) 只回傳 0 ~ 99,所以 q_all 應該少一個 q100 (即最大值)吧。

我的寫法如下

q_all = app_train.AMT_ANNUITY.quantile(np.linspace(0, 1, 101))

好似 pd.quantile 和 np.nanpercentile 都會自動跳過 NaN 而不計算吧。

回答列表

  • 2019/04/25 上午 10:08
    張維元 (WeiYuan)
    贊同數:0
    不贊同數:0
    留言數:4

    嗨嗨,這邊的 q 是百分位數的意思,根據定義「百分位數(percentile)利用累積相對次數,用1%、2%、3%、…、99%將資料均分成100等份,中間99個分割點所得到對應的數值,稱為該資料的第1、2、3…、99百分位數。」


    百分位數最大只到 99 分位數

  • 2019/04/25 下午 02:06
    張維元 (WeiYuan)
    贊同數:0
    不贊同數:0
    留言數:0

    嗨,如果根據公式定義的話是有 q0 - q100 的百分位數的:


    • q0 表示 有 0% 的資料小於等於這個數,而同時也有 100% 的資料大於等於這個數
    • qk 表示 有 k% 的資料小於等於這個數,而同時也有 (100-k)% 的資料大於等於這個數
    • q100 表示 有 100% 的資料小於等於這個數,而同時也有 0% 的資料大於等於這個數


    以定義來說 q0 就是最小值,應該找不到 q100 才對,所以我們一般會說百分位數只有 0 - 99 百分位,不過剛剛同同學分享的資料看,目前會將 q100 定義成最大值


    所以如果想要求出 q0 - q100 的話,range 要改成 range(101),range(100) 只能找到 q0 - q99 。