評估三方資料時遇到的一些程式碼和模型上的問題
阿新 • • 發佈:2018-12-17
1、特徵名稱編碼問題,特別是有中文的時候,容易遇到utf-8和unicode編碼不能比較的問題
- 計算機記憶體中,統一使用Unicode編碼,需要儲存或者傳輸時,轉換成UTF8編碼
- 而 Python2 預設編碼是 ASCII編碼。然而,眾所周知,在需要需要轉換的場景,ASCII 都是沒用的(128個字元,夠什麼吃)
- Python 3 預設編碼變為 Unicode。這也就意味著,做所有需要轉換的場合,都能正確併成功的轉換。
- 當在python2環境中遇到該問題時,可以
-
所有 text string 都應該是 unicode 型別,而不是 str,如果你在操作 text,而型別卻是 str,那就是在製造 bug。
- 在需要轉換的時候,顯式轉換。從位元組解碼成文字,用
var.decode(encoding)
,從文字編碼成位元組,用var.encode(encoding)
。 - 從外部讀取資料時,預設它是位元組,然後
decode
成需要的文字;同樣的,當需要向外部發送文字時,encode
成位元組再發送。
Python3中提供了encode()和decode()兩種方法encode的作用是是將某個unicode字串按照一定的編碼方式編碼成對應的位元組序列。 如str.encode('utf8'),表示將unicode編碼的字串str轉換成utf8編碼的位元組序列。
decode是一個反過程,將一個位元組序列按照一定的編碼方式解碼成unicode字串 如str.decode('utf8'),表示將utf8編碼的字串str轉換成unicode字串。
2、對比某個特徵源中某些特徵失效的影響
在相同的測試集上,對比auc發現,去掉某些特徵auc反而升高。
這說明訓練模型時,特徵選擇沒有做好,還是跳槽沒有調好?