logo
Loading...

將DataFrame裡的columns作trasform - Cupoy

我在使用sklearn.preprocessing裡面的transform (MinMaxScale...

將DataFrame裡的columns作trasform

2021/07/10 下午 11:30
機器學習A咖訓練營-Kaggle實戰演練
林敬堯
觀看數:36
回答數:1
收藏數:0

我在使用sklearn.preprocessing裡面的transform (MinMaxScaler,StandardScaler,OneHotEncoder)時,會出現以下錯誤: ex: #使用Titanic資料集 MMS = MinMaxScaler() MMS.fit_transform(data["Age"]) =============================== Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample. 我要改成以下的code才能成功 MMS = MinMaxScaler() MMS.fit_transform(data["Age"].values.reshape(-1,1)) 但在label encoding時卻不需要 ex: le = LabelEncoder() le.fit_transform(data["Embarked"]) 可以成功轉換 以上兩個轉換都是使用DataFrame的一個columns作轉換,為什麼一個需要再作reshape,一個不用呢? 還是再作轉換時,有建議的寫法?

回答列表

  • 2021/07/11 下午 03:56
    王健安
    贊同數:0
    不贊同數:0
    留言數:3

    您好: 從套件本身來看, OneHotEncoder在做 transform 時需要輸入二維資料, 而 LabelEncoder 只需要輸入一維資料, 回應最後有 sklearn 的官方文件可以參考, 從設計sklearn的角度來看, 我猜測開發人員是想要統一輸入與輸出的維度要相同, label encoding 只是把某一個特徵中的每個類別以代號表示, 結果同樣會維持一個特徵, 故以一維的型態表示; 而one-hot encoding 是需要把某一個特徵中的每個類別都獨立成一個特徵, 結果會從一個特徵變成多個特徵, 故以二維的型態表示。 參考資料: OneHotEncoder:https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.OneHotEncoder.html LabelEncoder:https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.LabelEncoder.html