TShopping

 找回密碼
 註冊
搜索
查看: 117|回復: 0

[教學] 字串轉換為何有不同的方法?OneHotEncoder,LabelBinarizer,LabelEncoder

[複製鏈接]
發表於 2021-3-25 23:05:10 | 顯示全部樓層 |閱讀模式
 
Push to Facebook Push to Plurk  
  1. from sklearn.preprocessing import OneHotEncoder,LabelBinarizer,LabelEncoder
  2. import pandas as pd
  3. import numpy as np
  4. X1=['XL','M','L']
  5. print(X1.__class__)
  6. X2=pd.DataFrame(X1)
  7. print(X2)
  8. print('OneHotEncoder')
  9. lb1=OneHotEncoder().fit_transform(X2).toarray()
  10. print(lb1)
  11. print('LabelBinarizer1')
  12. lb2=LabelBinarizer().fit_transform(X1)
  13. print(lb2)
  14. print(lb2.__class__)
  15. print('LabelBinarizer2')
  16. lb2=LabelBinarizer().fit_transform(X2)
  17. print(lb2)
  18. print(lb2.__class__)
  19. print('LabelEncoder1')
  20. lb3=LabelEncoder().fit_transform(X1)
  21. print(lb3)
  22. print('LabelEncoder2')
  23. lb3=LabelEncoder().fit_transform(X2)
  24. print(lb3)
複製代碼
X1 = ['XL', 'M', 'L']
X2 =
  0
0 XL
1 M
2 L
1.必須以column為單位
2.依據資料不同會產生多個column
3.每一個內容與原點的距離相同
OneHotEncoder =
[[0. 0. 1.]
[0. 1. 0.]
[1. 0. 0.]]
XL  M  L

1.可用row或著column為單位
2.不支援多個column的資料
3.每一個內容與原點的距離相同
LabelBinarizer1 =
[[0 0 1]
[0 1 0]
[1 0 0]]
XL M L
1.可用row或著column為單位
2.不支援多個column的資料
3.依據資料編碼進行轉換,不會設定為固定距離
LabelEncoder1=
[2 1 0]
XL M L
多個column的資料-->只有OneHotEncoder可以做編碼轉換
  1. from sklearn.preprocessing import OneHotEncoder,LabelBinarizer,LabelEncoder
  2. X1=[['US','M'],['UK','M'],['FR','F']]
  3. print(X1)
  4. lb1=OneHotEncoder().fit_transform(X1).toarray()
  5. print(lb1)
  6. #lb2=LabelBinarizer().fit_transform(X1)
  7. #print(lb2)
  8. #lb3=LabelEncoder().fit_transform(X1)
  9. #print(lb3)
複製代碼

字串轉換,OneHotEncoder,LabelBinarizer,LabelEncoder

字串轉換,OneHotEncoder,LabelBinarizer,LabelEncoder

字串轉換,OneHotEncoder,LabelBinarizer,LabelEncoder

字串轉換,OneHotEncoder,LabelBinarizer,LabelEncoder

字串轉換,OneHotEncoder,LabelBinarizer,LabelEncoder

字串轉換,OneHotEncoder,LabelBinarizer,LabelEncoder


多種編碼轉換方式的選擇
• 不會產生新的欄位(數值不會與原點同距離)
  • LabelEncoder 轉換後的資料不會產生新的欄位,他的數值不會與原點同距離,當資料的項目 >=3,數值資料就會有大小區別可能引導模型進行大小的判斷,不建議使用LabelEncoder。
• 產生新欄位(數值與原點同距離),
  • 請留意以row或column方式操作
    • 如果資料以row方式操作,無法使用OneHotEncoder進行轉換。
    • 如果資料是多個columns操作,無法使用LabelBinarizer進行轉換。

OneHotEncoder的參數

• ( )內可以省略,或著建議加入categories='auto'
• ( )內也可以指定欄位,建議交由語法自己決定。
• 編碼執行方式可分為兩種
1.循序漸進的方式
1.1 先產生OneHot物件
1.2 物件再執行訓練與轉換特定欄位內容維陣列


one1=OneHotEncoder( )
X2=one1.fit_transform(Sex1).toarray( )

 

臉書網友討論
您需要登錄後才可以回帖 登錄 | 註冊 |

本版積分規則



Archiver|手機版|小黑屋|免責聲明|TShopping

GMT+8, 2021-4-13 14:58 , Processed in 0.056737 second(s), 23 queries .

本論壇言論純屬發表者個人意見,與 TShopping綜合論壇 立場無關 如有意見侵犯了您的權益 請寫信聯絡我們。

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表