logo
Loading...

Day9的去除二分法欄位code不太理解 - Cupoy

# 再把只有 2 值 (通常是 0,1) 的欄位去掉numeric_columns = list(a...

ml100,ml100-d09

Day9的去除二分法欄位code不太理解

2020/07/24 下午 01:19
機器學習共學討論版
簡彤恩
觀看數:32
回答數:2
收藏數:0
ml100
ml100-d09

# 再把只有 2 值 (通常是 0,1) 的欄位去掉

numeric_columns = list(app_train[numeric_columns].columns[list(app_train[numeric_columns].apply(lambda x:len(x.unique())!=2 ))])

print("Numbers of remain columns %s" % len(numeric_columns))


這是我的code,但是輸入之後會跑出

C:\Users\sandy\anaconda3\lib\site-packages\ipykernel_launcher.py:2: UserWarning: Boolean Series key will be reindexed to match DataFrame index.


不太理解是哪裡出了問題,想請問解決辦法,謝謝

回答列表

  • 2020/07/24 下午 11:44
    張天恩
    贊同數:0
    不贊同數:0
    留言數:1

    稍微檢查了一下,你放上來的這幾行程式碼應該與課程提供的相同,所以,這邊會有警示的根本原因應該與前面要篩選數值型欄位欄位有關,要知道發生了什麼事得檢查前面的程式碼。


    另外,這段是警示而不是錯誤,發生原因是布林值序列的長度與 DataFrame 的長度不一樣,導致前者需要被修剪以符合後者(可以參考:https://stackoverflow.com/questions/41710789/boolean-series-key-will-be-reindexed-to-match-dataframe-index)。通常還是可以跑出結果,但是因為是系統自動幫你省略了這個過程,可能導致意料之外的資料丟失,因此才會出現警示。範例如下圖:

    在 In[38] 中我先是篩選了 df.c > 0.3 的資料,因此剩下兩筆。然而當我想要再做一次篩選丟入布林值長度為 5 的 df.a > 0 時,篩選後的 df 沒有那麼多資料與布林值配對,系統就自動幫你把布林值修剪到與 df 相同的長度,因此出現警示。(有講錯還請糾正 0.0)

  • 2020/07/27 下午 08:50
    張維元 (WeiYuan)
    贊同數:0
    不贊同數:0
    留言數:0

    嗨,這邊「UserWarning」指的是警告訊息,不是錯誤訊息。主要應該是「list(app_train[numeric_columns].apply(lambda x:len(x.unique())!=2 ))]」這個條件跟 app_train 有點狀況。


    如果這個回答對你有幫助請主動點選「有幫助」或「最佳解答」的按鈕,也可以追蹤我的GITHUB 帳號。若還有問題的話,也歡迎再開一個新的問題繼續發問(留言在原本的討論底下我可能不會回覆)或者把你理解的部分整理上來,我都會提供你 Review 和 Feedback 😃😃😃