特徵提取方法 one hot 和 TF IDF

2022-07-08 16:18:26 字數 2808 閱讀 8353

one-hot 和 tf-idf是目前最為常見的用於提取文字特徵的方法,本文主要介紹兩種方法的思想以及優缺點。

什麼是one-hot編碼?one-hot編碼,又稱獨熱編碼、一位有效編碼。其方法是使用n位狀態暫存器來對n個狀態進行編碼,每個狀態都有它獨立的暫存器位,並且在任意時候,其中只有一位有效。舉個例子,假設我們有四個樣本(行),每個樣本有三個特徵(列),如圖:

上圖中我們已經對每個特徵進行了普通的數字編碼:我們的feature_1有兩種可能的取值,比如是男/女,這裡男用1表示,女用2表示。那麼one-hot編碼是怎麼搞的呢?我們再拿feature_2來說明:

這裡feature_2 有4種取值(狀態),我們就用4個狀態位來表示這個特徵,one-hot編碼就是保證每個樣本中的單個特徵只有1位處於狀態1,其他的都是0。

one-hot編碼將每個狀態位都看成乙個特徵。對於前兩個樣本我們可以得到它的特徵向量分別為

one hot在特徵提取上屬於詞袋模型(bag of words)。關於如何使用one-hot抽取文字特徵向量我們通過以下例子來說明。假設我們的語料庫中有三段話:

我愛中國

爸爸媽媽愛我

爸爸媽媽愛中國

我們首先對預料庫分離並獲取其中所有的詞,然後對每個此進行編號:

1 我; 2 愛; 3 爸爸; 4 媽媽;5 中國

然後使用one hot對每段話提取特徵向量:

因此我們得到了最終的特徵向量為

我愛中國  ->   1,1,0,0,1

爸爸媽媽愛我  ->  1,1,1,1,0

爸爸媽媽愛中國  ->  0,1,1,1,1

優點:一是解決了分類器不好處理離散資料的問題,二是在一定程度上也起到了擴充特徵的作用(上面樣本特徵數從3擴充套件到了9)

缺點:在文字特徵表示上有些缺點就非常突出了。首先,它是乙個詞袋模型,不考慮詞與詞之間的順序(文字中詞的順序資訊也是很重要的);其次,它假設詞與詞相互獨立(在大多數情況下,詞與詞是相互影響的);最後,它得到的特徵是離散稀疏的。

from sklearn import

preprocessing

enc = preprocessing.onehotencoder() #

建立物件

enc.fit([[0,0,3],[1,1,0],[0,2,1],[1,0,2]]) #

擬合array = enc.transform([[0,1,3]]).toarray() #

轉化print(array)

if應該很容易理解就是計算詞頻,idf衡量詞的常見程度。為了計算idf我們需要事先準備乙個語料庫用來模擬語言的使用環境,如果乙個詞越是常見,那麼式子中分母就越大,逆文件頻率就越小越接近於0。這裡的分母+1是為了避免分母為0的情況出現。tf-idf的計算公式如下:

優點:簡單快速,結果比較符合實際

缺點:單純考慮詞頻,忽略了詞與詞的位置資訊以及詞與詞之間的相互關係。

from sklearn.feature_extraction.text import

countvectorizer

from sklearn.feature_extraction.text import

tfidftransformer

tag_list = ['

青年 吃貨 唱歌

',

'少年 遊戲 叛逆

',

'少年 吃貨 足球']

vectorizer = countvectorizer() #

將文字中的詞語轉換為詞頻矩陣

x = vectorizer.fit_transform(tag_list) #

計算個詞語出現的次數

"""word_dict = vectorizer.vocabulary_

"""transformer =tfidftransformer()

tfidf = transformer.fit_transform(x) #

將詞頻矩陣x統計成tf-idf值

print(tfidf.toarray())

特徵提取方法 one hot 和 TF IDF

one hot 和 tf idf是目前最為常見的用於提取文字特徵的方法,本文主要介紹兩種方法的思想以及優缺點。什麼是one hot編碼?one hot編碼,又稱獨熱編碼 一位有效編碼。其方法是使用n位狀態暫存器來對n個狀態進行編碼,每個狀態都有它獨立的暫存器位,並且在任意時候,其中只有一位有效。舉個...

邊緣特徵提取方法

邊緣檢測是圖形影象處理 計算機視覺和機器視覺中的乙個基本工具,通常用於特徵提取和特徵檢測,旨在檢測一張數字影象中有明顯變化的邊緣或者不連續的區域,在一維空間中,類似的操作被稱作步長檢測 step detection 邊緣是一幅影象中不同屈原之間的邊界線,通常乙個邊緣影象是乙個二值影象。邊緣檢測的目的...

邊緣特徵提取方法

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!邊緣檢測是圖形影象處理 計算機視覺和機器視覺中的乙個基本工具,通常用於特徵提取和特徵檢測,旨在檢測一張數字影象中有明顯變化的邊緣或者不連續的區域,在一維空間中,類似的操作被稱作步長檢測 step detection 邊緣是一幅影象中不同屈原之間的邊...