分類變量特征提取
分類數(shù)據(jù)的獨(dú)熱編碼方法,分類變量特征提?。∣ne-of-K or One-Hot Encoding):通過(guò)二進(jìn)制數(shù)來(lái)表示每個(gè)解釋變量的特征
from sklearn.feature_extraction import DictVectorizer
onhot_encoder = DictVectorizer()
instances=[{‘city’:‘New York’},{‘city’:‘San Francisco’},{‘city’:‘Chapel Hill’}]
print (onhot_encoder.fit_transform(instances).toarray())
[[0. 1. 0.]
[0. 0. 1.]
[1. 0. 0.]]
文字特征提取-詞庫(kù)模型
文字模型化最常用方法,可以看成是獨(dú)熱編碼的一種擴(kuò)展,它為每個(gè)單詞設(shè)值一個(gè)特征值。依據(jù)是用類似單詞的文章意思也差不多??梢酝ㄟ^(guò)有限的編碼信息實(shí)現(xiàn)有效的文檔分類和檢索。
CountVectorizer 類會(huì)將文檔全部轉(zhuǎn)換成小寫,然后將文檔詞塊化(tokenize)。文檔詞塊化是把句子分割成詞塊(token)或有意義的字母序列的過(guò)程。詞塊大多是單詞,但是他們也可能是一些短語(yǔ),如標(biāo)點(diǎn)符號(hào)和詞綴。
CountVectorizer類通過(guò)正則表達(dá)式用空格分割句子,然后抽取長(zhǎng)度大于等于2的字母序列。
from sklearn.feature_extraction.text import CountVectorizer
corpus = [
‘UNC played Duke in basketball’,
‘Duke lost the basketball game’,
‘I ate a sandwich’
]
vectorizer = CountVectorizer()
print (vectorizer.fit_transform(corpus).todense())
print (vectorizer.vocabulary_)
[[0 1 1 0 1 0 1 0 0 1]
[0 1 1 1 0 1 0 0 1 0]
[1 0 0 0 0 0 0 1 0 0]]
{‘unc’: 9, ‘played’: 6, ‘duke’: 2, ‘in’: 4, ‘basketball’: 1, ‘lost’: 5, ‘the’: 8, ‘game’: 3, ‘a(chǎn)te’: 0, ‘sandwich’: 7}
對(duì)比文檔的特征向量
對(duì)比文檔的特征向量,會(huì)發(fā)現(xiàn)前兩個(gè)文檔相比第三個(gè)文檔更相似。如果用歐氏距離(Euclidean distance)計(jì)算它們的特征向量會(huì)比其與第三個(gè)文檔距離更接近。
兩向量的歐氏距離就是兩個(gè)向量歐氏范數(shù)(Euclidean norm)或L2范數(shù)差的絕對(duì)值:d=||x0-x1||向量的歐氏范數(shù)是其元素平方和的平方根:scikit-learn里面的euclidean_distances函數(shù)可以計(jì)算若干向量的距離,表示兩個(gè)語(yǔ)義最相似的文檔其向量在空間中也是最接近的。
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.metrics.pairwise import euclidean_distances
vectorizer = CountVectorizer()
corpus = [
‘UNC played Duke in basketball’,
‘Duke lost the basketball game’,
‘I ate a sandwich’
]
counts = vectorizer.fit_transform(corpus).todense()
for x,y in [[0,1],[0,2],[1,2]]:
dist = euclidean_distances(counts[x],counts[y])
print(‘文檔{}與文檔{}的距離{}’.format(x,y,dist))
文檔0與文檔1的距離[[2.44948974]]
文檔0與文檔2的距離[[2.64575131]]
文檔1與文檔2的距離[[2.64575131]]
圖片特征的提取
數(shù)字圖像通常是一張光柵圖或像素圖,將顏色映射到網(wǎng)格坐標(biāo)里。一張圖片可以看成是一個(gè)每個(gè)元素都是顏色值的矩陣。表示圖像基本特征就是將矩陣每行連起來(lái)變成一個(gè)行向量。光學(xué)文字識(shí)別(Optical character recognition,OCR)是機(jī)器學(xué)習(xí)的經(jīng)典問(wèn)題。
scikit-learn的digits數(shù)字集包括至少1700種0-9的手寫數(shù)字圖像。每個(gè)圖像都有8x8像像素構(gòu)成。每個(gè)像素的值是0-16,白色是0,黑色是16。
# 通過(guò)像素提取特征值
from sklearn import datasets
import matplotlib.pyplot as plt
digits = datasets.load_digits()
print(‘Digit:’,digits.target[0])
print (digits.images[0])
plt.figure()
plt.axis(‘off’)
plt.imshow(digits.images[0], cmap=plt.cm.gray_r, interpolation=‘nearest’)
plt.show()
-
二進(jìn)制
+關(guān)注
關(guān)注
2文章
795瀏覽量
41653 -
數(shù)字圖像
+關(guān)注
關(guān)注
2文章
119瀏覽量
18762 -
編碼
+關(guān)注
關(guān)注
6文章
942瀏覽量
54831
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論