LabelEncoder與MinMaxScaler數值轉換
請問一下:
1.為什麼在這次的範例中LEncoder跟MMEncoder在轉換之前df[c]要做這個多的轉換,不能直接寫df[c]就好了嗎?
差別在哪裡呢?
2.在做LEn跟MMEn的處理方法為什麼不相同,其實我的目的只是想簡化程式而且兩種轉換的df[c]處理方法都不相同有點不值觀,我有試過在做LEn的時候其實只要list就可以了不一定需要.values,但是為什麼在MMEn的時候就不用list了呢?
3.為什麼到MMEn就要reshape而LEn不用?
4.為什麼一定要.values完之後才能reshape?不能直接df[c].reshape嗎?
回答列表
-
2019/09/30 上午 00:03張維元 (WeiYuan)贊同數:0不贊同數:0留言數:1
1.為什麼在這次的範例中LEncoder跟MMEncoder在轉換之前df[c]要做這個多的轉換,不能直接寫df[c]就好了嗎?差別在哪裡呢?
根據文件的寫法,應該不一定要轉成 list ,只要是 array-like 的資料就可以!差別只是型態不同而已
另外關於你後面這些問題,我會建議你與其這樣問,不如直接改改看,改了之後發現不行再去看文件找可能的原因是什麼。如果看不懂或是不符合你預期的結果,再提出來討論:)
-
2019/09/30 上午 01:26計弘達贊同數:0不贊同數:0留言數:3
1. LabelEncoder.fit_transform() needs parameter of "array-like of shape [n_samples]". And df[c] is a Series with index. So, it needs list() to convert df[c].values to array-like of shape [n_samples].
2. MinMaxScaler.fit_transform() needs parameter of "numpy array of shape [n_samples, n_features]". And df[c] is Series with index. So, it needs reshape() method to convert df[c].values to "array of shape [n_samples, n_features]". And reshape(-1, 1) method converts df[c].values to len(df[c].values) rows, one column array.
-
2019/10/01 下午 01:01陳明佑 (Ming You Chen)贊同數:1不贊同數:0留言數:1
同學您好,
你可以測試看看, 這邊不寫list會造成Error
之前有 trace 過, 主要是因為前面那一行 fillna(-1)的緣故
數值型的沒問題, 但是原本是文字的類別型資料就會出錯了
轉成 list 之後, 才能夠文字-1通吃
所以另一個辦法就是 數值型的 fillna(-1) / 文字形的 fillna('None')
這樣就不用list了, 同樣的位置只需要填 df[c]就可以