1. 程式人生 > >利用sklearn進行字典&文字的特徵提取

利用sklearn進行字典&文字的特徵提取

## 寫在前面 這篇部落格主要內容: 1. 應用DictVectorizer實現對類別特徵進行數值化、離散化 2. 應用CountVectorizer實現對文字特徵進行數值化 ## 特徵提取API ```python sklearn.feature_extraction ``` ## 字典特徵提取 **作用:對字典資料進行特徵值化** - sklearn.feature_extraction.DictVectorizer(sparse=True,…) - DictVectorizer.fit_transform(X) X:字典或者包含字典的迭代器返回值:返回sparse矩陣 - DictVectorizer.inverse_transform(X) X:array陣列或者sparse矩陣 返回值:轉換之前資料格式 - DictVectorizer.get_feature_names() 返回類別名稱 ```python # 資料 [{'city': '北京','temperature':100} {'city': '上海','temperature':60} {'city': '深圳','temperature':30}] ``` ```python # 程式碼 from sklearn.feature_extraction import DictVectorizer def dict_demo(): data = [{'city': '北京','temperature':100}, {'city': '上海','temperature':60}, {'city': '深圳','temperature':30}] # 1、例項化一個轉換器類 transfer = DictVectorizer(sparse=False) # 2、呼叫fit_transform data_new = transfer.fit_transform(data) print("data_new:\n",data_new) # 列印特徵名字 print("特徵名字:\n",transfer.get_feature_names()) return None ``` 注意`DictVectorizer`預設是true,輸出為稀疏矩陣,false輸出為普通矩陣 ![指定sparse=False結果](https://img2020.cnblogs.com/blog/1529113/202101/1529113-20210122231211827-2018861690.png) ## 文字特徵提取 **作用:對文字資料進行特徵值化** - **sklearn.feature_extraction.text.CountVectorizer(stop_words=[])** - 返回詞頻矩陣 - CountVectorizer.fit_transform(X) X:文字或者包含文字字串的可迭代物件 返回值:返回sparse矩陣 - CountVectorizer.inverse_transform(X) X:array陣列或者sparse矩陣 返回值:轉換之前資料格 - CountVectorizer.get_feature_names() 返回值:單詞列表 - **sklearn.feature_extraction.text.TfidfVectorizer** ```python # 資料 ["life is short,i like python", "life is too long,i dislike python"] ``` ```python # 程式碼 from sklearn.feature_extraction.text import CountVectorizer def count_demo(): data = ["life is short,i like like python", "life is too long,i dislike python"] transfer = CountVectorizer() data_new = transfer.fit_transform(data) print("data_new:\n",data_new.toarray()) print("特徵名字:\n",transfer.get_feature_names()) return None ``` 注意程式碼中的使用了`toarray()`,可以不加這個方法,再執行一下看看:bookmark_tabs: ![執行結果](https://img2020.cnblogs.com/blog/1529113/202101/1529113-20210122231938308-1794718