logo
Loading...

app_train[['TARGET', 'EXT_SOURCE_1', 'EXT_SOURCE_2', 'EXT_SOURCE_3', 'DAYS_BIRTH']] 程式碼中為何會使用到2個中括號? enumerate的使用方法? - Cupoy

1、請問一下,以下的程式碼第二行app_train後面為什麼需要用到二個中括號? ext_data...

ml100-2,語法,ml100-2-d15

app_train[['TARGET', 'EXT_SOURCE_1', 'EXT_SOURCE_2', 'EXT_SOURCE_3', 'DAYS_BIRTH']] 程式碼中為何會使用到2個中括號? enumerate的使用方法?

2019/05/01 上午 09:32
機器學習共學討論版
tklin
觀看數:11
回答數:3
收藏數:0
ml100-2
語法
ml100-2-d15

回答列表

  • 2019/05/01 下午 00:04
    張維元 (WeiYuan)
    贊同數:3
    不贊同數:0
    留言數:1

    1、請問一下,以下的程式碼第二行app_train後面為什麼需要用到二個中括號? 

    ext_data = app_train[['TARGET', 'EXT_SOURCE_1', 'EXT_SOURCE_2', 'EXT_SOURCE_3', 'DAYS_BIRTH']] 

    ext_data_corrs = ext_data.corr()  


    => 一個中括號取出的是 series,兩個中括號取出的是 dataframe

  • 2019/05/01 下午 00:07
    張維元 (WeiYuan)
    贊同數:2
    不贊同數:0
    留言數:1

    2、下列的程式碼看起來像迴圈,但好像又不太一樣,可以說明一下用法嗎? 

    for i, source in enumerate(['EXT_SOURCE_1', 'EXT_SOURCE_2', 'EXT_SOURCE_3']):     

        # 做 subplot     

        plt.subplot(1, 3, i + 1) 


    => 這個是迴圈沒錯,你要問的應該是 enumerate 是什麼嗎?

    enumerate 中文叫做枚舉、列舉,意思是他會幫你的容器計數,他的結果會變成這樣:


    ['EXT_SOURCE_1', 'EXT_SOURCE_2', 'EXT_SOURCE_3'] => [(0, 'EXT_SOURCE_1'), (1, 'EXT_SOURCE_2') ... ]


    原本的寫法等同於下面的寫法:


    ```

    i = 0

    for source in ['EXT_SOURCE_1', 'EXT_SOURCE_2', 'EXT_SOURCE_3']:

        plt.subplot(1, 3, i + 1) 

        i = i + 1

    ```

  • 2019/05/01 下午 00:09
    張維元 (WeiYuan)
    贊同數:1
    不贊同數:0
    留言數:1

    3、這個函數的定義看不太懂,可以說明一下相關參數的意思嗎?謝謝。 


    ```

    # 定義函數 : 計算兩個 column 之間的相關係數 

    def corr_func(x, y, **kwargs):

         r = np.corrcoef(x, y)[0][1]

         ax = plt.gca()

         ax.annotate("r = {:.2f}".format(r),

                     xy=(.2, .8), xycoords=ax.transAxes,

                     size = 20)

    ```


    => corr_func 輸入兩個 column x, y,會利用 np.corrcoef 計算相關性後回傳。**kwargs 在這裡沒有用到,可以拿掉沒關係。