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 。