為什麼線性回歸之前要做這步驟 MMEncoder.fit_transform(df)? - Cupoy

train_X = MMEncoder.fit_transform(df) <=為什麼線性回歸之前要...

為什麼線性回歸之前要做這步驟 MMEncoder.fit_transform(df)?

2020/03/05 下午 08:37
機器學習共學討論版
Shih Cheng Chen
觀看數:58
回答數:5
收藏數:0

train_X = MMEncoder.fit_transform(df) <=為什麼線性回歸之前要做這步驟?

estimator = LinearRegression()

cross_val_score(estimator, train_X, train_Y, cv=5).mean() 

最後算出的分數表示什麼? 越高越好嗎?

回答列表

  • 2020/03/05 下午 09:33
    Steven Hsu
    贊同數:2
    不贊同數:0
    留言數:0

  • 2020/03/05 下午 09:57
    Matthew Huang
    贊同數:2
    不贊同數:0
    留言數:0

    1. MinMaxScaler是特徵縮放(Feature scaling)的其中一個方法。特徵縮是是指將數據的各個特徵所依縮放至同一個尺度,以避免某自變量尺度過大而使得其他自變量被忽視,並且有助於模型收斂速度加快。類似的還有NormalizerStandardScaler


    2. cross_val_score是指交叉驗證,預設狀況下會等價為K折驗證,直接看sklearn官方的第一張圖就知道原理了。HW10範例是指將數據拆五段,各做一次測試,所以會得到五個相應誤差後再取平均。


    3.補充一下,如果是做time series課題的人,不能採用K折驗證作為驗證工具,應該採如這篇blog

  • 2020/03/05 下午 10:30
    李子明
    贊同數:5
    不贊同數:0
    留言數:0

    我覺得(不見得是對的)目前以類神經為主的機器學習,主要就是找出一個「不同類型的資料的線性組合」的結果,讓這個結果最接近期待中的結果。


    那不同類型的資料,要怎樣比較呢?比方「日幣vs美金vs身高vs體重」。


    MMEncoder是為了把數據依比例調整到一個固定的範圍中,比如[65535,-32767]之間的值會被調整為[0,1]之間的值,通常是因為

    一、距離的上下界(最大值、最小值)是不重要的,

    二、但距離之間的關係(2,2,6,8距離關係可以是1:3:4)是重要的

    三、不同種類之間的關係能夠有一致性的評量方式

    所以對於通常型的模型來說,日幣vs美金vs身高vs體重,這四種不同類型的資料都分別轉成[0,1]之間的值,「這樣子的比較」會比「直接拿原值」來比較更有意義,並且也能更節省機器學習的作業量(提高速度)。


    cross_val_score就是另外一個故事了,簡單回答一下,

    一、以這個例子來講,進行了五次機器學習,所以有五個推論得到的分數,mean將五個分數取了平均。

    二、不是越大越好,這跟你的目標函式的最佳化方向是最大值化還是最小值化有關。

  • 2020/03/06 上午 00:38
    崴崴
    贊同數:2
    不贊同數:0
    留言數:0

    cross_val_score中的scoring參數預設是none

    所以你是用sklearn.linear_model.LinearRegression預設的score在算分數

    預設的score是用R squared,直觀的看法像是MSE的normalized version,

    比較容易比較不同scale之間的model,

    而cross_val_score(cv=5)給的是5個不同valid set算出來分數的平均

    越接近1代表你在這堆sample出來的data上fit的越準

    但是不是越高越好要看情況,也有可能只是在training data上overfitting

    而且在這個作業中,如果你只是為了提高分數的話

    你把data point砍到剩極少,e.g. 只有兩筆,不管怎麼fit score都是1

  • 2020/03/06 上午 01:00
    張維元 (WeiYuan)
    贊同數:3
    不贊同數:0
    留言數:0

    嗨,關於你的「最後算出的分數表示什麼? 越高越好嗎?」問題


    我們可以直接看 cross_val_score 文件 ,其中說明該計算方法會依照 scoring 計算 cross-validation,預設會以每個模型的 Score 方法回主。接著,可以看 LinearRegression 文件 ,當中的 Score 是 Return the coefficient of determination R^2 of the prediction. cross-validation 指的是「將資料分成 N 等分,取其中 1 份當測試、 N-1 份用來訓練,重複 N 次取平均」,綜合來說,分數越高越好沒錯。


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