很多機器學習問題需要研究的物件時文字甚至影象,提取變數特徵的方法是資料處理的前提。
bow和vsm
bow:bags-of-words model,忽略文件內的單詞順序和語法等要素,將其僅僅看作是若干的詞彙的集合。
vsm:vector space model,表示文字文件的數學模型,在bow的假設下,將每個文件表示成同一向量空間的向量。
優化:
如果再出現乙個長文件,將會有更多的零向量,可以採取的方法是,最後僅僅出現在乙個文件中的都集中到乙個向量中,減少維數。
停用詞stop words,在資訊檢索中,為節省儲存空間和提高處理效率,在處理自然語言文字之前或之後自動過濾掉的某些字或詞。英文常用停用詞:the,a,of,an,to,be,etc。
n-gram模型
n-gram通常是指一段文字或語音中連續n個專案(item)的序列,專案可以是單詞、字母、鹼基對等。
n=1,稱為unigram;n=2,稱為bigram;n=3,稱為trigram。
tf-idf詞條權重計算
特徵向量裡高頻詞的權重更大,這些詞在文集內其他文件裡面也經常出現,對區分文件的作用不大,有必要抑制那些在很多文件中都出現了的詞條的權重。
詞條在文件d中的權值計算為:
w(t) = tf(t, d)* idf(t)
其中,tf(t, d)表示詞條t在文件d中出現頻率,idf(t)表示與包含詞條t的文件數目成反比。
特徵向量
使用sklearn庫的digits手寫字型資料集,並列印出來效果
from sklearn import datasets
import matplotlib.pyplot as plt
digits = datasets.load_digits()
#print(digits.keys())
#print(digits.images[0])
images_and_labels = list(zip(digits.images, digits.target))
for index, (image, label) in enumerate(images_and_labels[:4]):
plt.subplot(2,4, index+1)
plt.axis('off')
plt.imshow(image, cmap = plt.cm.gray_r, interpolation='nearest')
plt.title('training: %i' % label)
定量特徵的二值化
對於某些定量特徵,需要將定量資訊轉為區間劃分。如將考試成績,轉為及格或不及格。
方法:設定乙個閾值,大於閾值的賦值為1,小於或等於閾值的賦值為0。
缺失值計算
資料獲取時,由於某些原因,缺少某些數值,需要進行彌補;
彌補策略:預設為mean(均值)
舉例,如將0作為缺失值建立多項式特徵[0,4,2]
[2,3,4]
[8,0,0]
三列特徵中,第一列均值為5,第二列為3.5,第三列為3
處理後
[5,4,2]
[2,3,4]
[8,3.5,3]
需要注意的是,在測試集中的每列特徵的缺失值要用訓練集的該列特徵的均值彌補,而不能使用測試集的該列特徵均值
特徵工程方法
常用方法總結 其中過濾法幾大檢驗的區別 假設x為解釋變數,y為被解釋變數,我們想確定x的取值對y是否有影響 1 x,y都為分類變數,比如學歷和購買之間的關係,卡方檢驗 互資訊比較合適 2 x為連續變數,y為分類變數,比如身高和購買之間的關係,f檢驗比較合適 3 x,y都為連續變數,相關係數即可 互資...
特徵工程 特徵工程入門與實踐(一)
特徵工程 將資料轉換為能更好地表示潛在問題的特徵,從而提高機器學習效能。大體上,機器學習分為兩類 評估分類問題,可以採用交叉驗證法 from sklearn.linear model import logisticregression from sklearn.model selection imp...
特徵工程 常用的特徵轉換方法總結
機器學習模型的生命週期可以分為以下步驟 要構建模型就必須要對資料進行預處理。特徵轉換是這個過程中最重要的任務之一。在資料集中,大多數時候都會有不同大小的資料。為了使更好的 必須將不同的特徵縮小到相同的幅度範圍或某些特定的資料分布。什麼時候需要特徵轉換 什麼時候不需要特徵轉換 大多數基於樹型模型的整合...