特徵提取(feature extraction)
特徵提取將機器學習算法不能識別的原始數據轉化為算法可以識別的特徵,特徵萃取的目的,主要是讓我們能夠利用這些特徵對物件種類進行判別,常用於圖像識別、語意辨識等等...。
類別特徵(Category feature)
常見非數值資料就是分類(categorical)資料,資料是離散的,例如性別:男、女,職業:醫生、護士、司機、工程師...等,我們通常會將他轉為ont-hot-encoding形式。
-
pandas
pandas.get_dummies
-
sklearn
sklearn.feature_extraction.DictVectorizer
sklearn.preprocessing.OneHotEncoder
sklearn.compose.ColumnTransformer
文字特徵
常見的文字特徵如一篇文章或一句句子,我們提取成Bag-of-words或者word embedding。
- Bag-of-words
Bag-of-words是將一整篇文章或句子將所有出現過的詞都裝進一個Bag中(詞表),然後依據這個詞表我們可以將另一句句子或另一篇文章轉換成詞向量(沒見過得詞可以在詞表中添加一個其他(other)來表示。
- TF-IDF
sklearn_TF-IDF
Bag-of-words的方法會導致太多權重被放在高頻的詞上,而可以使用TF-IDF算法來改善這個問題。
維基百科TF-IDF的例子:
有很多不同的數學公式可以用來計算tf-idf。詞頻(tf)是一詞語出現的次數除以該檔案的總詞語數。假如一篇檔案的總詞語數是100個,而詞語「母牛」出現了3次,那麼「母牛」一詞在該檔案中的詞頻就是3/100=0.03。而計算檔案頻率(IDF)的方法是以檔案集的檔案總數,除以出現「母牛」一詞的檔案數。所以,如果「母牛」一詞在1,000份檔案出現過,而檔案總數是10,000,000份的話,其逆向檔案頻率就是lg(10,000,000 / 1,000)=4。最後的tf-idf的分數為0.03 * 4=0.12。
-
sklearn.feature_extraction.text.TfidfTransformer
將Bag-of-words後的詞向量,轉換成TF-IDF。
-
sklearn.feature_extraction.text.TfidfVectorizer
將文檔、句子轉換成TF-IDF。
影像特徵
最簡單的就是我們把圖像的像素看做一個矩陣,甚至可以把它flatten降成一維。
- sklearn.feature_extraction.image.extract_patches_2d
對影像進行隨機裁剪,也可視作一種數據增強,例如我們要進行卷積時,圖像太大直接裁剪可能會破壞了訊息,就可以使用這種隨機裁剪方式,在每次訓練時進隨機裁剪,而每次迭代都取道不同的位置,同時可以縮減數據尺寸又能增強數據。
sklearn.feature_extraction.image.extract_patches_2d
- HOG
HOG原理与OpenCV实现
圖像特徵提取三大法寶:HOG特徵,LBP特徵,Haar特徵
深度学习----CNN的图像学习之HOG(方向梯度直方图)详解
skimage.feature.hog
缺省處理跟管線應用
缺省處理
-
numpy
-
pandas
-
sklearn
sklearn.impute.SimpleImputer