logo
Loading...

titanic範例作業中Survived與PassengerId欄位問題 - Cupoy

Q1為什麼要將trian.csv裡的Survived與test.csv裡的PassengerId獨立...

ml100-4

titanic範例作業中Survived與PassengerId欄位問題

2020/03/31 上午 09:35
機器學習共學討論版
AC
觀看數:17
回答數:8
收藏數:0
ml100-4

Q1為什麼要將trian.csv裡的Survived與test.csv裡的PassengerId獨立出來各自變成一個變數?又為什麼是用test.csv裡的PassengerId而不是trian.csv裡的PassengerId


Q2為什麼要將trian.csv裡的PassengerId、Survived拿掉?為什麼要將test.csv裡的PassengerId拿掉?(對於PassengerId我的理解是在訓練模型時如果沒有ID只剩下與ID相關的資料沒辦法去核對到底是哪些人可以存活,所以不要拿掉才對;Survived拿掉就不確定原因了)


Q3為什麼要將兩個資料集test.csv與trian.csv concat起來?訓練集與測試集不就是一個是訓練模型一個是測試模型所以是分開使用的啊



In [2]:

train_Y = df_train['Survived']

ids = df_test['PassengerId']

df_train = df_train.drop(['PassengerId', 'Survived'] , axis=1)

df_test = df_test.drop(['PassengerId'] , axis=1)

df = pd.concat([df_train,df_test])

df.head()

回答列表

  • 2020/03/31 下午 07:14
    李子明
    贊同數:1
    不贊同數:0
    留言數:0

    因為Survived是答案,機器學習的目的,就是為了要推論出答案。當機器學習在進行「模型中的權值決定」的過程中,如果其中一個特徵就是答案本身的話,那機器學習得到的結果會很容易以這個特徵為依據而得到overfitting的結果,所以答案只能獨立出來供驗證反饋用。


    因為PassengerId僅僅是用來識別各筆資料用的索引值,這樣子的索引值很明顯的不應該與答案有關係,所以可以被排除。


    test.csv中的PassengerID獨立出來的原因是,test.csv是考題,考題中除了PassengerID以外的特徵需要使用concat來與train.csv一起參與特徵工程,目的是防止test.csv中出現有「trian.csv中沒有的值」的情況。當機器學習完成後,需要對考題進行推論,然後依「PassengerID, 答案」的型式來交卷。

  • 2020/04/05 上午 04:01
    張維元 (WeiYuan)
    贊同數:0
    不贊同數:0
    留言數:2

    嗨,AC,關於你的問題以下簡單回覆:


    Q1為什麼要將trian.csv裡的Survived與test.csv裡的PassengerId獨立出來各自變成一個變數?又為什麼是用test.csv裡的PassengerId而不是trian.csv裡的PassengerId


    => trian.csv 的 Survived 是為來拿來當學習的 Y 值使用。test.csv 的 PassengerId 是之後要繳交答案是使用。這邊我想先確認一下你是否知道「trian」跟「test」的差異,並且知道這裡的操作流程為何。例如:取出 _____ 的 _____ 欄位,跟 _____ 的 _____ 欄位做模型,然後應用在 _____ 的 _____ 欄位上產生 _____ 結果,然最後提交,這一段的空格你都知道怎麼填嗎?


    如果這個回答對你有幫助請主動點選「有幫助」的按鈕,也可以追蹤我的GITHUB帳號。若還有問題的話,也歡迎繼續再追問或者把你理解的部分整理上來,我都會提供你 Review 和 Feedback 😃😃😃

  • 2020/04/05 上午 04:02
    張維元 (WeiYuan)
    贊同數:1
    不贊同數:0
    留言數:0

    嗨,AC,關於你的問題以下簡單回覆:


    Q2. 為什麼要將trian.csv裡的PassengerId、Survived拿掉?為什麼要將test.csv裡的PassengerId拿掉?(對於PassengerId我的理解是在訓練模型時如果沒有ID只剩下與ID相關的資料沒辦法去核對到底是哪些人可以存活,所以不要拿掉才對;Survived拿掉就不確定原因了)


    => 嗨,PassengerId 拿掉的原因是,這個欄位是唯一值,對於模型來說沒有可學習性。因為拿到會有無法和對的問題,所以我們在前一步才會把 PassengerId 存下來。


    如果這個回答對你有幫助請主動點選「有幫助」的按鈕,也可以追蹤我的GITHUB帳號。若還有問題的話,也歡迎繼續再追問或者把你理解的部分整理上來,我都會提供你 Review 和 Feedback 😃😃😃

  • 2020/04/05 上午 04:03
    張維元 (WeiYuan)
    贊同數:0
    不贊同數:0
    留言數:1

    嗨,AC,關於你的問題以下簡單回覆:


    Q2. Q3為什麼要將兩個資料集test.csv與trian.csv concat起來?訓練集與測試集不就是一個是訓練模型一個是測試模型所以是分開使用的啊


    => 這裡要先對所有資料做一樣的 data preprocessing 哦!


    如果這個回答對你有幫助請主動點選「有幫助」的按鈕,也可以追蹤我的GITHUB帳號。若還有問題的話,也歡迎繼續再追問或者把你理解的部分整理上來,我都會提供你 Review 和 Feedback 😃😃😃

  • 2020/04/10 上午 00:09
    張維元 (WeiYuan)
    贊同數:0
    不贊同數:0
    留言數:0

    1. 但檔案Day_007_HW In [2]:後面的 data preprocessing 是在統計 int、float、object欄位的個數,而test.csv與trian.csv 的欄位都一樣,所以照理來說不用concat對嗎? 


    => 是的!


    如果這個回答對你有幫助請主動點選「有幫助」的按鈕,也可以追蹤我的GITHUB帳號。若還有問題的話,也歡迎繼續再追問或者把你理解的部分整理上來,我都會提供你 Review 和 Feedback 😃😃😃