Spark MLlib 特徵抽取、轉化和選擇 -- 特徵抽取3 CountVectorizer
這一部分主要介紹和特徵處理相關的演算法,大體分為以下三類:
1)特徵抽取:從原始資料中抽取特徵
2)特徵轉換:特徵的維度、特徵的轉化、特徵的修改
3)特徵選取:從大規模特徵集中選取一個子集
特徵提取:
CountVectorizer
CountVectorizer旨在通過計數來將一個文件轉換為向量。當不存在先驗字典時,CountVectorizer作為Estimator提取詞彙進行訓練,並生成一個CountVectorizerModel用於儲存相應的詞彙向量空間。
在CountVectorizerModel的訓練過程中,CountVectorizer將根據語料庫中的詞頻排序從高到低進行選擇,詞彙表的最大含量由vocabsize超引數來指定,超引數minDF,則指定詞彙表中的詞語至少要在多少個不同文件中出現。
1)匯入CountVectorizer所需要的包:
2)假設我們有如下的DataFrame,其包含id和words兩列,可以看成是一個包含兩個文件的迷你語料庫
3)通過CountVectorizer設定超引數,訓練一個CountVectorizer,這裡設定詞彙表的最大量為3,設定詞彙表中的詞至少要在2個文件中出現過,以過濾那些偶然出現的詞彙。
4)在訓練結束後,可以通過cv對DataFrame進行fit,獲得到模型的詞彙表:
5)在訓練結束後,可以通過cv對DataFrame進行fit,獲得到模型的詞彙表: