天天看點

《Web安全之機器學習入門》一 3.3 特征提取

機器學習中,特征提取被認為是個體力活,有人形象地稱為“特征工程”,可見其工作量之大。特征提取中數字型和文本型特征的提取最為常見。

數字型特征可以直接作為特征,但是對于一個多元的特征,某一個特征的取值範圍特别大,很可能導緻其他特征對結果的影響被忽略,這時候我們需要對數字型特征進行預處理,常見的預處理方式有以下幾種。

1.标準化:

2.正則化:

3.歸一化:

文本型資料提取特征相對數字型要複雜很多,本質上是做單詞切分,不同的單詞當作一個新的特征,以hash結構為例:

鍵值city具有多個取值,“Dubai”、“London”和“San Fransisco”,直接把每個取值作為新的特征即可。鍵值temperature是數值型,可以直接作為特征使用。

文本特征提取有兩個非常重要的模型。

詞集模型:單詞構成的集合,集合中每個元素都隻有一個,即詞集中的每個單詞都隻有一個。

詞袋模型:如果一個單詞在文檔中出現不止一次,并統計其出現的次數(頻數)。

兩者本質上的差別,詞袋是在詞集的基礎上增加了頻率的次元:詞集隻關注有和沒有,詞袋還要關注有幾個。

假設我們要對一篇文章進行特征化,最常見的方式就是詞袋。

導入相關的函數庫:

執行個體化分詞對象:

将文本進行詞袋處理:

擷取詞袋資料,至此我們已經完成了詞袋化。但是對于程式中的其他文本,如何使用現有的詞袋的特征進行向量化呢?

我們定義詞袋的特征空間叫做詞彙表vocabulary:

針對其他文本進行詞袋處理時,可以直接使用現有的詞彙表:

TensorFlow中有類似實作:

平時處理資料時,CSV是最常見的格式,檔案的每行記錄一個向量,其中最後一列為标記。TensorFlow提供了非常便捷的方式從CSV檔案中讀取資料集。

加載對應的函數庫:

從CSV檔案中讀取資料:

其中各個參數定義為:

filename,檔案名;

target_dtype,标記資料類型;

features_dtype,特征資料類型。

通路資料集合的特征以及标記的方式為:

繼續閱讀