1. 程式人生 > >評估三方資料時遇到的一些程式碼和模型上的問題

評估三方資料時遇到的一些程式碼和模型上的問題

1、特徵名稱編碼問題,特別是有中文的時候,容易遇到utf-8和unicode編碼不能比較的問題

  • 計算機記憶體中,統一使用Unicode編碼,需要儲存或者傳輸時,轉換成UTF8編碼
  • 而 Python2 預設編碼是 ASCII編碼。然而,眾所周知,在需要需要轉換的場景,ASCII 都是沒用的(128個字元,夠什麼吃)
  • Python 3 預設編碼變為 Unicode。這也就意味著,做所有需要轉換的場合,都能正確併成功的轉換。
  • 當在python2環境中遇到該問題時,可以
  1. 所有 text string 都應該是 unicode 型別,而不是 str,如果你在操作 text,而型別卻是 str,那就是在製造 bug。

  2. 在需要轉換的時候,顯式轉換。從位元組解碼成文字,用 var.decode(encoding),從文字編碼成位元組,用 var.encode(encoding)
  3. 從外部讀取資料時,預設它是位元組,然後 decode 成需要的文字;同樣的,當需要向外部發送文字時,encode 成位元組再發送。

Python3中提供了encode()和decode()兩種方法encode的作用是是將某個unicode字串按照一定的編碼方式編碼成對應的位元組序列。 如str.encode('utf8'),表示將unicode編碼的字串str轉換成utf8編碼的位元組序列。

decode是一個反過程,將一個位元組序列按照一定的編碼方式解碼成unicode字串 如str.decode('utf8'),表示將utf8編碼的字串str轉換成unicode字串。

2、對比某個特徵源中某些特徵失效的影響

在相同的測試集上,對比auc發現,去掉某些特徵auc反而升高。

這說明訓練模型時,特徵選擇沒有做好,還是跳槽沒有調好?