本文主要介紹基於sklearn的特徵提取,旨在為機器學習提供乙個好的開端
1.分類特徵提取
如上圖所示:許多特徵如pclass代表乘客船艙等級,分為1,2,3。還有例如性別,乘客登船碼頭,稱之為分類特徵。
對於這一類資料的提取,採用one-hot編碼。
例如:data資料有兩個特徵,分別是城市和溫度,顯然第乙個特徵為分類特徵。
[[ 1. 0. 0. 50.]
[ 0. 0. 1. 40.]
[ 0. 1. 0. 36.]]
data = [,,]
import sklearn
from sklearn.feature_extraction import dictvectorizer
def dict_demo(): #分類特徵提取
data = [,,]
trans = dictvectorizer(sparse=false)
trans_data = trans.fit_transform(data)
print(trans_data)
if __name__ == "__main__":
dict_demo()
輸出結果: 將分類資料用one-hot編碼,前邊三列為城市特徵,後邊一列為溫度特徵
[[ 1. 0. 0. 50.]
[ 0. 0. 1. 40.]
[ 0. 1. 0. 36.]]
輸出此時的特徵:
print(trans.get_feature_names())
可見下圖輸出
['city=beijing', 'city=chongqing', 'city=shanghai', 'tem']
因為one-hot編碼中0太多了,占用大量儲存空間,所以在
trans = dictvectorizer(sparse=false)
去掉sparse=false後即採用稀疏矩陣儲存,如下圖:
(0, 0) 1.0
(0, 3) 50.0
(1, 2) 1.0
(1, 3) 40.0
(2, 1) 1.0
(2, 3) 36.0
上圖通過座標和數的形式可以儲存所有的非零值
2.文字特徵提取
對於,通常根據單詞劃分特徵
from sklearn.feature_extraction.text import countvectorizer
def count_text():#文字特徵提取
ct = countvectorizer(stop_words=['is','12'])
data =
data1 = ct.fit_transform(data)
print(data1.toarray())
print(ct.get_feature_names())
print(data1)
if __name__ == "__main__":
count_text()
輸出特徵:
['am', 'big', 'data', 'everyone', 'hello', 'my', 'name', 'old', 'years']
輸出特徵出現次數
[[1 1 1 1 1 1 1 1 1]]
特徵提取 機器學習
特徵提取簡介 sift原理 sift原理 sift原理 1.k近鄰法,簡單來說就是哪個點離得近就把例項點歸到哪一類中。特殊情況是最近鄰演算法 1近鄰演算法。演算法主要包括演算法的模型,距離度量 k值的選擇和演算法的具體實現。其中演算法的實現主要有兩種形式 線性掃瞄法和構建資料索引。改善演算法最好的當...
機器學習 特徵提取
from sklearn.feature extraction import dictvectorizer import numpy as np 定義一組字典列表,用來表示多個資料樣本 d1 例項化 dict dictvectorizer data dict fit transform d1 轉化後...
機器學習 特徵提取(一)
原始資料的種類有很多,除了數位化的訊號資料,還有大量符號化的文字。然而,無法將符號化的文字用於任務計算,二是通過某些處理手段,預先將文字量化為特徵向量。有些用符號化表示的資料特徵已經相對結構化,並且以字典這種資料結構進行儲存。這時使用dictvectorizer對特徵進行抽取和量化。定義乙個字典列表...