資源描述:
《3-feature-extraction-and-preprocessing》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫(kù)。
1、特征提取與處理上一章案例中的解釋變量都是數(shù)值,比如匹薩的直接。而很多機(jī)器學(xué)習(xí)問(wèn)題需要研究的對(duì)象可能是分類變量、文字甚至圖像。本章,我們介紹提取這些變量特征的方法。這些技術(shù)是數(shù)據(jù)處理的前提——序列化,更是機(jī)器學(xué)習(xí)的基礎(chǔ),影響到本書(shū)的所有章節(jié)。分類變量特征提取許多機(jī)器學(xué)習(xí)問(wèn)題都有分類的、標(biāo)記的變量,不是連續(xù)的。例如,一個(gè)應(yīng)用是用分類特征比如工作地點(diǎn)來(lái)預(yù)測(cè)工資水平。分類變量通常用獨(dú)熱編碼(One-of-KorOne-HotEncoding),通過(guò)二進(jìn)制數(shù)來(lái)表示每個(gè)解釋變量的特征。例如,假設(shè)city變量有三個(gè)值:NewYork
2、,SanFrancisco,ChapelHill。獨(dú)熱編碼方式就是用三位二進(jìn)制數(shù),每一位表示一個(gè)城市。scikit-learn里有DictVectorizer類可以用來(lái)表示分類特征:In[1]:fromsklearn.feature_extractionimportDictVectorizeronehot_encoder=DictVectorizer()instances=[{'city':'NewYork'},{'city':'SanFrancisco'},{'city':'ChapelHill'}]print(on
3、ehot_encoder.fit_transform(instances).toarray())[[0.1.0.][0.0.1.][1.0.0.]]會(huì)看到,編碼的位置并不是與上面城市一一對(duì)應(yīng)的。第一個(gè)city編碼NewYork是[0.1.0.],用第二個(gè)元素為1表示。相比用單獨(dú)的數(shù)值來(lái)表示分類,這種方法看起來(lái)很直觀。NewYork,SanFrancisco,ChapelHill可以表示成1,2,3。數(shù)值的大小沒(méi)有實(shí)際意義,城市并沒(méi)有自然數(shù)順序。文字特征提取很多機(jī)器學(xué)習(xí)問(wèn)題涉及自然語(yǔ)言處理(NLP),必然要處理文字信息。
4、文字必須轉(zhuǎn)換成可以量化的特征向量。下面我們就來(lái)介紹最常用的文字表示方法:詞庫(kù)模型(Bag-of-wordsmodel)。詞庫(kù)表示法詞庫(kù)模型是文字模型化的最常用方法。對(duì)于一個(gè)文檔(document),忽略其詞序和語(yǔ)法,句法,將其僅僅看做是一個(gè)詞集合,或者說(shuō)是詞的一個(gè)組合,文檔中每個(gè)詞的出現(xiàn)都是獨(dú)立的,不依賴于其他詞是否出現(xiàn),或者說(shuō)當(dāng)這篇文章的作者在任意一個(gè)位置選擇一個(gè)詞匯都不受前面句子的影響而獨(dú)立選擇的。詞庫(kù)模型可以看成是獨(dú)熱編碼的一種擴(kuò)展,它為每個(gè)單詞設(shè)值一個(gè)特征值。詞庫(kù)模型依據(jù)是用類似單詞的文章意思也差不多。詞庫(kù)模型
5、可以通過(guò)有限的編碼信息實(shí)現(xiàn)有效的文檔分類和檢索。一批文檔的集合稱為文集(corpus)。讓我們用一個(gè)由兩個(gè)文檔組成的文集來(lái)演示詞庫(kù)模型:In[2]:corpus=['UNCplayedDukeinbasketball','Dukelostthebasketballgame']文集包括8個(gè)詞:UNC,played,Duke,in,basketball,lost,the,game。文件的單詞構(gòu)成詞匯表(vocabulary)。詞庫(kù)模型用文集的詞匯表中每個(gè)單詞的特征向量表示每個(gè)文檔。我們的文集有8個(gè)單詞,那么每個(gè)文檔就是由一
6、個(gè)包含8位元素的向量構(gòu)成。構(gòu)成特征向量的元素?cái)?shù)量稱為維度(dimension)。用一個(gè)詞典(dictionary)來(lái)表示詞匯表與特征向量索引的對(duì)應(yīng)關(guān)系。在大多數(shù)詞庫(kù)模型中,特征向量的每一個(gè)元素是用二進(jìn)制數(shù)表示單詞是否在文檔中。例如,第一個(gè)文檔的第一個(gè)詞是UNC,詞匯表的第一個(gè)單詞是UNC,因此特征向量的第一個(gè)元素就是1。詞匯表的最后一個(gè)單詞是game。第一個(gè)文檔沒(méi)有這個(gè)詞,那么特征向量的最后一個(gè)元素就是0。CountVectorizer類會(huì)把文檔全部轉(zhuǎn)換成小寫(xiě),然后將文檔詞塊化(tokenize)。文檔詞塊化是把句子分
7、割成詞塊(token)或有意義的字母序列的過(guò)程。詞塊大多是單詞,但是他們也可能是一些短語(yǔ),如標(biāo)點(diǎn)符號(hào)和詞綴。CountVectorizer類通過(guò)正則表達(dá)式用空格分割句子,然后抽取長(zhǎng)度大于等于2的字母序列。scikit-learn實(shí)現(xiàn)代碼如下:In[3]:fromsklearn.feature_extraction.textimportCountVectorizercorpus=['UNCplayedDukeinbasketball','Dukelostthebasketballgame']vectorizer=Coun
8、tVectorizer()print(vectorizer.fit_transform(corpus).todense())print(vectorizer.vocabulary_)[[11010101][11101010]]{'unc':7,'played':5,'game':2,'in':3,'basketball':0,'t